crack小实验

本文是按照《0day安全》一书中的实验一步步实现的,对于反汇编也有了新的认识。

工具:winxp sp3虚拟机,IDA Pro 6.6,OllyDbg,UltraEditor,VC 6.0,LordPE。

因为在win7下面虚拟内存有重定向的问题,不利于分析,因此在虚拟机win xp下面进行实验,win7下也可以通过ALSR插件来实现。

一、VC下编写小程序

程序实现密码验证,只有正确的密码才能成功。

二、IDA Pro反汇编程序

可见“jz short loc_4010F6"是程序的判断语句,正确则进入右侧输出”Congratulation!",否则进入左侧,输出"incorrect password!"。

按空格键,找到语句所在位置“.text:004010E5                 jz      short loc_4010F6”。

三、OllyDbg动态调试

Ctrl+G找到“004010E5”所在位置:

CPU Disasm
地址 十六进制数据 汇编代码 注释
004010E5 /74 0F je short 004010F6

F2添加断点调试,发现程序确实在这里分支。

而通过将je(74)修改为jne(75)即可实现错误密码可以通过,而正确密码不能通过的现象。

四、LordPE计算文件偏移地址

可知文件偏移地址为:0x004010E5-0x00400000 = 0x10E5

五、UltraEditor编辑PE文件

用UltraEditor打开PE文件,Ctrl+G找到0x10E5位置发现确实是"74",改为“75”即可,保存后运行发现程序确实发生了预期的变化。

posted @ 2015-10-10 16:36  大魔王Faker  阅读(343)  评论(0编辑  收藏  举报