西电逆向第6题,听说很强。。。
结果还真搞了我快一个小时。。。算它赢了。。
题目要求是这样的:
crackme为一登陆认证模型,请以XDCSC2012为用户名,突破反调试,尝试分析Reg机制,得到正确的password,提交即可。
提示:
1.算法不可逆时,利用分析所得参量编写code实现Brute Crack可能是最简易的选择
2.此处已知在认证机制分析透彻后,可通过手工编程暴力破解[关键参量<=2字符(小写字母+数字)]
详细过程就没力气写出来了。。。
我对算法不感兴趣,所以没想要逆算法,直接入手。。。
反调试算是不错的,比前段时间论坛里某大牛写的那个被删23G数据的还2。。
首先是Tls。。。2个call,这个是防止被OD启动
再来是一个主线程的死循环检测,也是那2的call,防止被OD附加。。。
还有一个蒙人的call,如果从EP跟下去,会看到一个cdecl的call后面跟一个call,第二个call直接退出了。。。。貌似SOD还是被检测到了。。。没事,nop这个call就行了。。
然后开一个线程验证用户名和密码,主线程只是死循环的Anti而已。。。
不过StrongOD都卡擦卡擦了,然后找到关键call了,下了个int3程序立马退出。。感觉有猫腻,对那个函数的入口下内存访问断点,原来笔记本太小了没看到下面,下面有一个PUSH EBP的代码检测,跳exit的。。。Ctrl+F,把能跳那个的命令都fuck了,安全跟下去,跑到关键跳,直接改JO,就OK了。。。说起来这东西如果没SOD的话真心无聊。。。
放上exe,一个原版的,一个我把Anti艹了的(分析算法的人可以省点力,不过你至少加个SOD。。。说实话那2个call真心无聊),一个完全艹了的,输啥都恭喜了。
ps:回楼上。。。。。其实IDA也算逆向,不过F5犯规了。。。