逆向分析 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窗体还是存在的。
来看看哈,谢谢lz 这个可以的666 表哥,那个push为什么加4C? 去除NAG这一块还是不很明白啊!去掉时间倒是懂了,但为什么要加上4c,再将窗口的01和00互换,这一块还不理解!!!感谢楼主!!!! {:5_116:}窝在被窝里看 感谢分享.. 大神,学习了 楼主是大牛,鉴定完毕 感谢楼主分享