几种方法调试一个CM
本帖最后由 byh3025 于 2017-4-25 10:08 编辑昨天晚上见论坛有人发了一个CM,想拿它练练手,先打开看看是什么东东,怎么回事?直接弹错。
我可什么也没输入啊,况且也没看到有地方输入注册码,这时我看到文件夹内有一个KEY,莫非是在这里面输入?姑且试试吧,打开,然后在里面输入假码
好了,载入OD,然后去401000处,看样子像易语言,那我们就试试秒杀易语言大法吧
查找命令,输入TEST EDX,3
好,找到了,下断吧,F9运行,运行几次后我们就看到了真假码对比
下面我们来爆破它,CTRL+F9到段尾,记住返回值是0XFFFFFFFF,等一下我们有用
F8出CALL,这是什么鬼?没关系,我们右键,分析,从模块中删除分析就好了,这时我们看到一条指令:SETE AL它受上面CMP的影响,相等为真,EAX=1,反之为假,EAX=0
第一,我们可以把上面的MOV EAX,0改为MOV EAX,1,再把SETE ALNOP掉,就实现了爆破,如下图所示
第二,我们已经知道此时EAX=0XFFFFFFFF,那么我们就可以把CMP EAX,0X0 改为CMP EAX,0XFFFFFFFF,如下图所示,也实现了爆破的目的
当然,我们还可以用赋值法给EAX赋值为0,效果都是一样的,下面我们主要讲一下另类的爆破,由于搜索不到字符串,昨天看了@酒醒黄昏 的教程,就借用他的方法,下面看图吧,载入OD然后F9运行,直接弹错,别管它,F12暂停,查看-窗口,找到弹错的提示,右键-在CLASSPROC上设置消息断点,来到如下界面,点确定
下好断以后,重新加载程序,F9几次后我们在堆栈窗口看到了错误提示的内容,
这时我们取消断点,ALT+F9返回到程序领空,就是弹错的地方
单步F8出CALL,我们一眼就看到了一个JNZ能跳过它,那就改为JMP吧,改好后F9运行,我们发现成功了
由于是小白,当中难免会有许多不足之处,望路过的大年多多指教,其实我刚开始是相从正确提示入手的,由于昨天晚上弄得太晚了,头昏脑胀的,成功一次后忘记怎么弄的了,结果到现在也弄不好了。
PS:还有一个问题,我的OD下面的Commadd不知怎么回事消失不见了,谁能说下是什么问题吗?谢谢了
酒醒黄昏 发表于 2017-3-18 10:16
把这个CM 地址给我一下 看看
还有一个很诡异的地方,无论是错误提示返回还是正确提示返回,结果都是在一个地方,所以如果保存的话应该是不会成功的
0047F9F5 /75 16 jnz short 测试加密.0047FA0D
0047F9F7|. |FF75 10 push
0047F9FA|. |8B06 mov eax,dword ptr ds: ;测试加密.004B402C
0047F9FC|. |8BCE mov ecx,esi
0047F9FE|. |FF75 0C push
0047FA01|. |FF75 08 push
0047FA04|. |FF90 A0000000 call dword ptr ds:…………………………………正确提示框
0047FA0A|. |8945 FC mov ,eax
0047FA0D|> \8B45 FC mov eax,
0047FA10|.5E pop esi
0047FA11|.C9 leave
0047FA12\.C2 0C00 retn 0xC
0047F9F5 75 16 jnz short 测试加密.0047FA0D
0047F9F7|.FF75 10 push
0047F9FA|.8B06 mov eax,dword ptr ds: ;测试加密.004B3820
0047F9FC|.8BCE mov ecx,esi
0047F9FE|.FF75 0C push
0047FA01|.FF75 08 push
0047FA04|.FF90 A0000000 call dword ptr ds:…………………………………………错误提示框
0047FA0A|.8945 FC mov ,eax
0047FA0D|>8B45 FC mov eax,
0047FA10|.5E pop esi
0047FA11|.C9 leave
0047FA12\.C2 0C00 retn 0xC Hmily 发表于 2017-3-17 23:23
第一个方法是怎么总结出来的?那地方是易语言的通用对比函数特征?
命令行那个strongod插件提供,看看选 ...
呵呵,大神见笑了,我哪里会总结什么啊,只是用了秒杀易语言的方法,既然有真假码的对比,那它就会计算出一个结果,然后拿这个结果去比较的。另外命令行那个strongod插件选项大神能说详细点吗?我怎么找不到呢,谢谢了 学习楼主好技术,感谢分享 第一个方法是怎么总结出来的?那地方是易语言的通用对比函数特征?
命令行那个strongod插件提供,看看选项是不是关了。 Hmily 发表于 2017-3-17 23:23
第一个方法是怎么总结出来的?那地方是易语言的通用对比函数特征?
命令行那个strongod插件提供,看看选 ...
目测那个地方是易语言的文本比较 熟能生巧 多练几遍办法很多种,但目的只有一个,到成功的时候就发现前边所有的切入口都差不多。加油。另外最后一个暂停法不适合用,比较繁杂,建议用消窗断点拦截,然后直接在右下键的窗口找,最后回溯下断点就简单多了。 苏紫方璇 发表于 2017-3-17 23:26
目测那个地方是易语言的文本比较
那玩意是怎么总结的? 额,我还算是小白,,但是我也看看,先谢楼主 酒醒黄昏 发表于 2017-3-18 09:10
熟能生巧 多练几遍办法很多种,但目的只有一个,到成功的时候就发现前边所有的切入口都差不多。加油。 ...
我试了,它这个用消息窗口是断不下来 byh3025 发表于 2017-3-18 10:13
我试了,它这个用消息窗口是断不下来
把这个CM 地址给我一下 看看