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

说明:
1,程序无壳,查壳得知为VC++编写。好像易语言,MFC,都会识别成VC++。
2,本帖面向新手,测试为无字符串,或无提示时对于MFC编写程序的另一种处理方法。
3,程序有字符串,不过,我们测试的是按钮事件,虽然强大的智能搜索更实用,但是,不是所有程序都有字符串。
4,面向新手,面向新手,面向新手,面向新手。重要的事情说四遍
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

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消
    昵称