软件介绍:
eXeScope能在没有资源文件的情况下分析,显示不同的信息,重写可执行文件的资源,包括(EXE,DLL,OCX,VBX)等。是方便强大的汉化工具,可以直接修改用 VC++ 及 DELPHI编制的程序的资源,包括菜单、对话框、字串表等。
破解开始:
工具:
OD、ExeInfo
在已经使用一次软件过后,软件已经不能使用,需要注册后才能使用
1
打开注册窗口,随意输入名字和ID,会弹出注册失败的消息框
2
首先利用Exeinfo查看信息
3
可以看到是Borland 的Delphi程序,并没有加壳。不多废话,直接拖入OD,尝试最简单的方法,搜索字符串“无效的ID或名字”。
4
找到字符串,通过字符串向上看,尝试找到关键跳转和关键call
为了验证关键跳转是否正确,将JE改为JNE,让跳转不实现
6
改完跳转,并没有错误弹框,点击注册发现已经注册成功,但是这种暴力破解没有太大技术含量,这次选择分析出软件的算法并写出注册机。
在关键call下断点,重新运行OD,点击注册,填入信息,点击确定,会停到关键call的断点上,经过分析,注册码和用户名没有关系,只是单纯的ID的一些简单算法。
7
图上代码经过分析,已经可以确定ID有十位和前五位的具体数值,在往下继续看
8
将上图代码拿出来解析:
004CBFE5 8B45 FC MOV EAX,DWORD PTR SS:[EBP-0x4]
004CBFE8 0FB640 08 MOVZX EAX,BYTE PTR DS:[EAX+0x8] ;将ID第9位赋给EAX
004CBFEC 8B55 FC MOV EDX,DWORD PTR SS:[EBP-0x4]
004CBFEF 0FB652 09 MOVZX EDX,BYTE PTR DS:[EDX+0x9] ;将ID第9位赋给EDX
004CBFF3 03C2 ADD EAX,EDX ;EAX = EAX + EDX
004CBFF5 B9 0A000000 MOV ECX,0xA ;ECX = 0xA
004CBFFA 33D2 XOR EDX,EDX ;EDX = 0
004CBFFC F7F1 DIV ECX ;EDX = EAX % ECX
004CBFFE 83FA 04 CMP EDX,0x4
004CC001 75 02 JNZ SHORT eXeScope.004CC005
004CC003 B3 01 MOV BL,0x1 ;标志位
004CC005 33C0 XOR EAX,EAX
当EDX = 0x4时,将BL变为1
在回到前面的关键call附近看一下
9
可以看到,当AL = 0x1时,跳转不成立,也就是说注册码正确
由前面的分析也可以看出,后半部分只对id的第9位和第10位进行了验证,6、7、8位只要在0到9之间即可
第9位和第十位的操作也很简单,例如:
第9位等于7,第10位等于1
他们的ASCII码分别是0x37和0x31
EAX = 0x37
EDX = 0x31
EAX = EAX + EDX = 0x68
ECX = 0xA
EDX = 0
当EDX = EAX % ECX = 0x68 % 0xA = 0x4即成立
写出注册机,测试:
10
利用注册码可以看到已经注册成功。
|