The046. 反汇编练习,适合破解新手的160个CrackMe [002] 之 [爆破+注册机]
反汇编实战练手,下面是我的学习记录,如有疑问欢迎交流指正。^_^
被试程序合集下载:帖子https://www.52pojie.cn/thread-1598336-1-1.html
0x0、查壳,无壳程序,VB语言编写。
0x2、熟悉程序运行流程。打开程序,除了用户名什么都不输入时提示error’5’以外,输入任何假码,都提示You Get Wrong Try Again。
0x3、OD载入,F9运行,输入假码,提示You Get Wrong Try Again。
0x4、F12暂停程序,Alt+K打开调用堆栈窗口,发现VB程序跟C++不一样,没有MessageBox函数调用,查询资料发现rtcMsgBox就是VB的弹窗函数。或者还有一个傻办法,只有00402622这个地址比较像程序领空的,就选它了,右键显示调用。
0x5、反汇编窗口来到0040261C处,F2断点。向上翻,发现了You Get Wrong提示在004025E5处,此处由一个跳转跳过来,继续往上,又看到You Get It的成功标志,上一行一个JE跳转,很明显了,不让它跳转就成功了。
0x6、将0040258B的JE跳转NOP掉,保存为1.exe,运行。除了用户名什么都不输入报错外,输入任何字符都成功,爆破完成了。
0x7、下面来制作注册机。OD载入原程序Afkayas.1.Exe,来到关键跳(上面有到关键跳的方法)。
0x8、向上翻,来到程序头,F2下断点,输入假码,程序会运行到00402310断点处如下。
0x9、F8边走边看,看到了一些关键信息,我也不知道怎么标注才是对的,避免误导大家,我就不分析代码了。
关键1 取我们输入的账号
关键2 真码???
关键3 真假码出现了
关键4 eax=AKA-585235,压入栈。感觉就是真码了。
0xA、后面也没有发现大的值的变化,也许是我发现不了吧,先将【AKA-585235】带入程序试试。居然成功了。
0xB、祭出注册机编写器,F8打开内存注册机,添加数据如下(注意一定要选择宽字符串,因为真码是UNICODE格式,我刚开始没选宽字符,获取的ASCII字符串,只能获取到真码的一个字符,折腾了半天,大家不要走弯路),生成注册机123.exe。
0xC、运行注册机123.exe,输入假码,提示错误,同时弹出了注册机界面,显示了真码,复制到程序即可注册成功。