victor8093 发表于 2017-11-17 21:24

逆向分析 160个crackme之AfKayAs.2

逆向AfKayAs.2第一部分 逆向软编码
**** Hidden Message *****


将所得的711226*3-2得到2133676,同样是在浮点寄存器中实现的运算



最后再加上15(这里是减去-15,不要弄错了)得到2133691,真码也就计算完成了。



继续往下分析就会看到获取输入的假码,转换为浮点数后与真码进行除法,最后用进行比较。



输入真码进行验证发现正确。最后总结下真码的计算方式:(用户名长度*15b38+用户名首字节+2)*3-2+15.


第二部分 去除NAG窗体
将程序导入OD,对一行PUSH后的立即数加上4c得到406820作为跳转地址



在数据窗口中goto定位到406820的位置,对其数据再次进行数据窗口中跟随


代码行四行为一段,第四行的第五个字节就是窗体的顺序,进行修改后就可以把NAG窗体取消了。


另外一种方法就是将程序导入OD,在SetTimer函数处设置一个断点(因为第一个NAG是停留了一段时间后才进入到注册页面,说明是有一个时间设置的)



设置完断点后F9运行,就可以在堆栈窗口中看到NAG窗体所停留的时间为7s,因为是在系统领空,我们无法修改,那么我们借助WinHex工具。


将程序导入到WinHex,记住之前NAG停留时间的十六进制数,待会需要用到。


通过搜索十六进制数581b00(这个是NAG窗体停留时间的十六进制表示)定位到位置后,修改停留时间为010000(若值全为0,则表示一直存在),然后保存就可以了。这个实际上只是让NAG窗体停留足够短以致无法察觉,NAG窗体还是存在的。



夏洛魂 发表于 2017-11-19 19:11

来看看哈,谢谢lz

疯子888 发表于 2017-12-3 12:37

这个可以的666

疯子888 发表于 2017-12-3 15:50

表哥,那个push为什么加4C?

海天一色001 发表于 2017-12-17 14:56

去除NAG这一块还是不很明白啊!去掉时间倒是懂了,但为什么要加上4c,再将窗口的01和00互换,这一块还不理解!!!感谢楼主!!!!

asdasddfg 发表于 2017-12-17 17:47

{:5_116:}窝在被窝里看

806226268 发表于 2017-12-17 20:25

感谢分享..

bitfxr 发表于 2017-12-17 20:51

大神,学习了

1334931062 发表于 2018-2-4 11:25

楼主是大牛,鉴定完毕

浅醉。 发表于 2018-3-12 14:57

感谢楼主分享
页: [1] 2 3 4
查看完整版本: 逆向 160个crackme之AfKayAs.2