拿到exe文件,先用PeiD查一下有没有壳,什么语言写的:
确定了是delphi写的之后,放到Delhpi Decompiler反编译分析:
点击Procedures,再双击CKM
注意到chkcode那个函数,怀疑是检测代码,ida跟进去看看:
函数前面部分是根据输入的用户名,计算出一个注册码:
所以连接后的字符串为:”黑头Sun Bird”+(用户名长度+5)+”dseloffc-012-OK”+用户名,这个也就是注册码了
中间的部分是垃圾代码,没有实际作用:
后面的部分是比较输入的注册码和计算注册码是否相等:
这个函数就分析完成了,要爆破的话就吧0x457d3a的jnz short failed指令nop掉就ok
那么是在那里检查赋给[ebx+0x30c]的值呢?分析发现是在Panel1Click函数里面检查的(Panel1Cilck函数在Delhpi Decompiler反编译时就发现了):
我把下面的已经nop掉了,源程序不是这样的