一别两宽丶 发表于 2019-7-22 05:19

按钮事件系列之MFC。实战某子软件的某账本

说明:
1,程序无壳,查壳得知为VC++编写。好像易语言,MFC,都会识别成VC++。
2,本帖面向新手,测试为无字符串,或无提示时对于MFC编写程序的另一种处理方法。
3,程序有字符串,不过,我们测试的是按钮事件,虽然强大的智能搜索更实用,但是,不是所有程序都有字符串。
4,面向新手,面向新手,面向新手,面向新手。重要的事情说四遍{:301_997:}
5,使用工具如下:动态调试工具:吾爱专用OD
查壳软件:PEID
测试环境:论坛虚拟机最新版
爆破成员:一别两宽

正文:
先查壳吧。不论程序有没有加壳,个人感觉还是有查下,毕竟知己知彼方能百战不殆嘛



无壳,直接丢OD 。顺便说下VC++和MFC的区别。虽说都会识别为VC++,但是MFC的程序会调用一个叫mfc42.dll的模块,我们就是要找它。以便确认是否为MFC程序。


既然确定为MFC程序,那就开始操作吧。双击mfc42.dll,进去看看,进来后直接开始准备下断点,在反汇编窗口右键——查找——所有命令——输入sub eax,0a——确定即可

在找到的界面挨个双击进去看看

进来后在下一行代码je处点一下,然后回车跟随跳转,跟过去找下一行代码的call


该程序搜索到三个符合特征的命令。大家可以都跟过去看看不是关键call的长啥样。这里直接开始下断,进行注册。程序成功被断下。接着F7单步步入进call看看。进call直接有个jmp,主意,此时并不是关键的地方,我们要单步走到jmp,让它跳转。跳转后才是真正的核心。

jmp过后,开始单步F8一直跟他走


经过一路F8单步很快就会来到关键call和关键跳。经过测试,nop掉je,可以爆破,不过不是完美爆破。重启后还是未注册

那我们就进关键call里面看看吧,在关键call内一路F8碰到个jnz。经过测试,jnz跳转外面的关键跳je也跳转,jnz不跳转外面的je也不跳。个人理解外面的je只是一个弹窗,关键call的jnz才是真正的关键跳。于是,祭出nop大法,直接nop掉jnz。

那就保存测试下吧


先测试了注册,提示注册成功。

接着重启程序,点了关于。结果,成功爆破,没有变回未注册

OK,爆破完成,至于追码没追到。不是明码,内存注册机就显得有些苍白了,大牛可以写一个注册机,玩玩。



                                                    共同努力,共同学习
                                             



                                                       END

Oneisall 发表于 2019-7-22 05:33

观摩,一起学习

awfbg 发表于 2019-7-22 05:48

厉害{:1_921:},学习了,感谢楼主分享!

彩虹爱天空 发表于 2019-7-22 05:57

楼主辛苦了

ShutAF 发表于 2019-7-22 06:48

upupup 辛苦了

yuangui 发表于 2019-7-22 06:52


楼主辛苦了,感谢楼主分享!{:1_893:}

weidian 发表于 2019-7-22 06:55

楼主辛苦了,刚好可以学习下

lxj129290 发表于 2019-7-22 06:58

新人学习了

腾旭 发表于 2019-7-22 07:07

不错,学习了

aiask 发表于 2019-7-22 07:07

非常适合新手,虽然有些地方还不太理解,希望以后出更多面向新手的技术贴,感谢
页: [1] 2 3 4
查看完整版本: 按钮事件系列之MFC。实战某子软件的某账本