您的位置:首页 > 其它

初识PE结构:简单的越过验证

2016-12-17 22:20 274 查看
重新学习汇编的过程中,偶然的机会接触到了软件逆向的知识,简直是打开一个新大门,让我对汇编和计算机有了新的认识,参照《WINDOWS PE权威指南》中内容,完成了一个小小的破解练习,学会几个逆向常用的工具,整个过程做个记录。
这里对一个网上下载的小软件进行破解,打开时会发现需要注册码,输入错误的注册码时就不能安装软件,并提示注册失败。



我们根据这个错误提示,使用UltraEdit工具,查看.exe文件,查找“注册失败”





我们可以看到,这段字符串的文件偏移地址为0x00081A79。
获取到文件偏移地址后,我们需要获取exe文件被操作系统加载到内存中的地址,文件偏移地址和内存地址通常满足特定的公式可以计算,在这里的计算相对简单:
内存地址=0x400000+文件偏移地址;
即内存地址=0x400000+0x81A79=0x0481A79;
所以内存地址为0x0481A79;
打开OD,载入文件运行,右键查找常量,



输入计算号的内存地址0x0481A79





便得到了指令所在的内存地址0x00405D2D
这时我们要知道程序是如何跳到这个位置的,我们需要通过W32DASM来定位上一个判断语句的指令位置,这个软件相对简单可以使用W32DASM软件直接观察静态分析代码获得,打开W32DASM,载入执行文件,搜索0x00405D2D,在往上不难找到,0x00405CD2的位置便是判断注册码的分支语句:
jg 00405d11
如果大于就跳转到失败的位置,我们只要让它别跳到失败的位置,直接运行到下一条指令,便能绕过验证码的过程
以上改成jg 00405cd8



打开OD,载入软件运行,搜索命令405D11







找到指令后双击,修改为JG 00405cd8,一定要勾选使用NOP填充,因为修改后的指令与原来的指令长度可能不一致,为了不改变整个EXE文件的结构和大小,最好使用NOP填充,点击汇编。



右键复制到可执行文件,选择。



右击保存文件



再运行就OK了^ ^V。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  破解