论文部分内容阅读
摘 要: 软件的广泛应用带来了高额的经济效益。受高额利润驱使,某些个人或团体采用多种手段攻击和破解软件,给软件安全构成重大威胁,损害软件所有人权益。了解软件解密机理,采取有效措施,有助于防范恶意程序,提高软件安全。Ollydbg作为常用的软件动态分析工具,对软件破解意义重大,了解其工作机理,有助于软件加密,防范软件威胁。
关键词: 解密;加密;恶意程序;ollydbg
1 概述
随着软件产品大量用于日常工作和学习中,软件的安全性受到不同领域、不同背景及不同群体的关注,有关软件加密、解密及病毒防护一直是软件安全的重要领域。了解软件加密、解密及病毒防护机理,有助于提高软件安全。
软件分析方法主要分静态分析和动态分析法。静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析,了解软件的编程思路,以便顺利破解。但静态分析不可能真正地了解软件的细节,如果碰到压缩程序,静态分析就无能为力了,只能采用动态分析。Ollydbg是一个新的动态追踪工具,能很好地完成程序反汇编工作。
Ollydbg作为常用的软件动态分析工具,对软件破解意义重大,了解恶意程序的实现机理,能帮助我们更好地保障软件安全。本文主要说明ollydbg对破解软件的工作机理,说明加密及解密的有关概念及原理,并简要介绍像病毒一类恶意程序的实现原理,从而提高软件安全防护意识。
2 相关概念
2.1 软件加密
软件开发者为了维护自身的商业利益,不断地寻找各种有效的技术来保护自身的软件版权,以增加其保护强度,推迟软件被破解的时间,由此产生了软件加密行为。
软件加密就是用户在发送信息前,先调用信息安全模块对信息进行加密,然后发送,到达接收方后,由用户使用相应的解密软件进行解密并还原。采用软件加密方式有以下优点:已经存在标准的安全API(Application Programming Interface,应用程序编程接口)产品、实现方便、兼容性好。
2.2 软件解密
破解者或受盗版所带来的高额利润的驱使,或出于纯粹的个人兴趣,而不断制作新的破解工具并针对新出现的保护方式进行跟踪分析以找到相应的破解方法,从而达到无授权使用软件的目的。
2.3 恶意程序的工作原理
对于运行软件的可执行程序,排除其他无关因素,软件在正确的执行过程无非法错误。如果出现了不应有的错误,多半是受恶意程序的影响。那么作为恶意程序的开发者,将正确的程序执行过程破坏,使程序运行之后跳到自己编写的程序段,执行恶意程序代码,阻止程序继续往下执行,就达到了目的。
恶意程序对可执行程序的修改如下:
a)保存宿主文件的头3个字节到病毒代码中的AHead缓冲区中;
b)得到宿主文件的长度Length;
c)修改宿主文件的头3个字节为Jmp 100+length;
d)在文件尾添加病毒代码VCode;
e)判斷是否满足病毒发作条件,不满足转g);
f)执行病毒的破坏代码;
g)从Ahead缓冲区传送3个字节到 cs:100H;
h)跳转到100H,执行原来文件的操作。(Jmp 100H)
上述说明是对恶意程序的执行过程的说明,宿主文件将会继续执行后续的程序,要达到完全的阻止宿主文件执行,可去除上述e)、g)及h)步。
2.4 ollydbg
ollydbg是一个动态追踪工具,使用该工具能查看程序的汇编代码,通过分析程序执行过程可实现对程序的破解。Ollydbg的操作界面如图1所示。
ollydbg中各窗口功能说明如下:
a)反汇编窗口:显示被调试程序的反汇编代码;
b)寄存器窗口:显示当前所选线程的CPU寄存器内容;
c)信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等;
d)数据窗口:显示内存或文件的内容;
e)堆栈窗口:显示当前线程的堆栈。
3 使用ollydbg实现程序破解
3.1 加载可执行程序
双击打开ollydbg程序,通过菜单文件->打开 来载入要加载的程序,ollydbg中显示的程序打开结果如图2所示:
3.2 实现原理
程序在执行中常要求用户输入注册码,只有输入正确的注册码,程序才能继续往后执行,否则将会弹出错误提示框,并结束程序的执行。这个过程说明了程序的加密机制,同时也从侧面反映了如何达到解密。
3.2.1 经反汇编的程序有关键的程序跳转点,这些重要的汇编跳转指令说明见表1。
3.2.2 获取注册文本的基本API函数如下:
a)GetWindowTextA: 它的作用是复制指定窗口中的字符到缓冲区;
b)GetDlgItemTextA:它的作用是返回对话框中某一个窗口的标题或文字;
c)MessageBoxA:它的作用创建、显示和操作信息框。32位API常有 A W两种形式:MessageBoxA, MessageBoxW 。
3.2.3 程序破解过程说明如下:
a)运行软件,获取注册错误信息;
b)进行反汇编;
c)串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键 ;
d)主窗口中分析相应汇编,找出关键跳转和关键call;
e)反推到跳转比较点,并获取注册信息;
f)修改比较跳转语句,保存软件。
4 结论
对ollydbg破解软件过程的说明,能加强对软件破解机理的理解,从反向来提高软件安全意识以防范软件安全威胁。对ollydbg的深入实践将促使软件开发人员采用更优的软件加密方案,防范软件安全。
参考文献
[1] 沈美明 温冬禅 编著IBM-PC汇编语言程序设计 第2版清华大学出版社.
[2] 曹加恒著 新一代汇编语言程序设计 高等教育出版社.
关键词: 解密;加密;恶意程序;ollydbg
1 概述
随着软件产品大量用于日常工作和学习中,软件的安全性受到不同领域、不同背景及不同群体的关注,有关软件加密、解密及病毒防护一直是软件安全的重要领域。了解软件加密、解密及病毒防护机理,有助于提高软件安全。
软件分析方法主要分静态分析和动态分析法。静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析,了解软件的编程思路,以便顺利破解。但静态分析不可能真正地了解软件的细节,如果碰到压缩程序,静态分析就无能为力了,只能采用动态分析。Ollydbg是一个新的动态追踪工具,能很好地完成程序反汇编工作。
Ollydbg作为常用的软件动态分析工具,对软件破解意义重大,了解恶意程序的实现机理,能帮助我们更好地保障软件安全。本文主要说明ollydbg对破解软件的工作机理,说明加密及解密的有关概念及原理,并简要介绍像病毒一类恶意程序的实现原理,从而提高软件安全防护意识。
2 相关概念
2.1 软件加密
软件开发者为了维护自身的商业利益,不断地寻找各种有效的技术来保护自身的软件版权,以增加其保护强度,推迟软件被破解的时间,由此产生了软件加密行为。
软件加密就是用户在发送信息前,先调用信息安全模块对信息进行加密,然后发送,到达接收方后,由用户使用相应的解密软件进行解密并还原。采用软件加密方式有以下优点:已经存在标准的安全API(Application Programming Interface,应用程序编程接口)产品、实现方便、兼容性好。
2.2 软件解密
破解者或受盗版所带来的高额利润的驱使,或出于纯粹的个人兴趣,而不断制作新的破解工具并针对新出现的保护方式进行跟踪分析以找到相应的破解方法,从而达到无授权使用软件的目的。
2.3 恶意程序的工作原理
对于运行软件的可执行程序,排除其他无关因素,软件在正确的执行过程无非法错误。如果出现了不应有的错误,多半是受恶意程序的影响。那么作为恶意程序的开发者,将正确的程序执行过程破坏,使程序运行之后跳到自己编写的程序段,执行恶意程序代码,阻止程序继续往下执行,就达到了目的。
恶意程序对可执行程序的修改如下:
a)保存宿主文件的头3个字节到病毒代码中的AHead缓冲区中;
b)得到宿主文件的长度Length;
c)修改宿主文件的头3个字节为Jmp 100+length;
d)在文件尾添加病毒代码VCode;
e)判斷是否满足病毒发作条件,不满足转g);
f)执行病毒的破坏代码;
g)从Ahead缓冲区传送3个字节到 cs:100H;
h)跳转到100H,执行原来文件的操作。(Jmp 100H)
上述说明是对恶意程序的执行过程的说明,宿主文件将会继续执行后续的程序,要达到完全的阻止宿主文件执行,可去除上述e)、g)及h)步。
2.4 ollydbg
ollydbg是一个动态追踪工具,使用该工具能查看程序的汇编代码,通过分析程序执行过程可实现对程序的破解。Ollydbg的操作界面如图1所示。
ollydbg中各窗口功能说明如下:
a)反汇编窗口:显示被调试程序的反汇编代码;
b)寄存器窗口:显示当前所选线程的CPU寄存器内容;
c)信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等;
d)数据窗口:显示内存或文件的内容;
e)堆栈窗口:显示当前线程的堆栈。
3 使用ollydbg实现程序破解
3.1 加载可执行程序
双击打开ollydbg程序,通过菜单文件->打开 来载入要加载的程序,ollydbg中显示的程序打开结果如图2所示:
3.2 实现原理
程序在执行中常要求用户输入注册码,只有输入正确的注册码,程序才能继续往后执行,否则将会弹出错误提示框,并结束程序的执行。这个过程说明了程序的加密机制,同时也从侧面反映了如何达到解密。
3.2.1 经反汇编的程序有关键的程序跳转点,这些重要的汇编跳转指令说明见表1。
3.2.2 获取注册文本的基本API函数如下:
a)GetWindowTextA: 它的作用是复制指定窗口中的字符到缓冲区;
b)GetDlgItemTextA:它的作用是返回对话框中某一个窗口的标题或文字;
c)MessageBoxA:它的作用创建、显示和操作信息框。32位API常有 A W两种形式:MessageBoxA, MessageBoxW 。
3.2.3 程序破解过程说明如下:
a)运行软件,获取注册错误信息;
b)进行反汇编;
c)串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键 ;
d)主窗口中分析相应汇编,找出关键跳转和关键call;
e)反推到跳转比较点,并获取注册信息;
f)修改比较跳转语句,保存软件。
4 结论
对ollydbg破解软件过程的说明,能加强对软件破解机理的理解,从反向来提高软件安全意识以防范软件安全威胁。对ollydbg的深入实践将促使软件开发人员采用更优的软件加密方案,防范软件安全。
参考文献
[1] 沈美明 温冬禅 编著IBM-PC汇编语言程序设计 第2版清华大学出版社.
[2] 曹加恒著 新一代汇编语言程序设计 高等教育出版社.