在大连做安天技术论坛 CrackMe1

第一题还是很简单的,是一个会弹出窗口的验证码,内容也没有经过加密,程序界面是这样的。

在大连做安天技术论坛 CrackMe1_第1张图片

拖进ollDbg里面开始跑,找到关键点的方法很多,

(1)可以直接使用Ultra String Reference

(2)在命令栏中输入bp MessageBoxA 这样程序会断在MessageBox函数的第一行,在使用Alt+F9返回程序领空,往回查找关键转跳

(3)或者断在MessageBoxA,程序内可以使用Alt+K查看堆栈调用,在调用函数偏移处下断也可


这里说下,因为PE头的ImageBase一般是4000000,所以偏移量为40xxxx的一般是程序领空,即程序的代码段。

偏移量为77xxxx的特别大的,为系统领空。

ImageBase是当加载进内存时镜像的第1个字节的首选地址。

它必须是64K的倍数。DLL默认是10000000H。Windows CE 的EXE默认是00010000H。Windows 系列的EXE默认是00400000H。



关键语句如下

在大连做安天技术论坛 CrackMe1_第2张图片

修改方法有很多,

(1)可以吧两个关键转跳jnz改成je,但要注意为AfxMessageBoxA压入参数的时候,前两个参数传入都为eax,这里很阴险

在比较相等时eax为0,压入参数正确执行,但是只修改转跳语句,并不影响eax的值,MessageBoxA的第一个参数应该是父窗口句柄,

传入毫无意义的eax值,会出错不弹窗。

(2)暴力把所有判断比较都删掉。

(3)把转跳改成,无条件转跳  jmp 00401614


总之改的很随意,最后效果是这样。

在大连做安天技术论坛 CrackMe1_第3张图片


你可能感兴趣的:(在大连做安天技术论坛 CrackMe1)