按钮事件系列之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
观摩,一起学习 厉害{:1_921:},学习了,感谢楼主分享! 楼主辛苦了 upupup 辛苦了
楼主辛苦了,感谢楼主分享!{:1_893:} 楼主辛苦了,刚好可以学习下 新人学习了 不错,学习了 非常适合新手,虽然有些地方还不太理解,希望以后出更多面向新手的技术贴,感谢