在看雪学习不短的时间了,这两天碰到一个共享软件局域网内只能同时运行一个,运行多个就会弹出消息框警告并且推出。于是就用爆破法对该程序进行了破解,为了版权问题,这里不公布软件名称。该贴也仅限于新人区学习交流,高手飘过请指点。
破解工具:OllyDbg
步骤:1.运行该程序使其出现这个错误,记录下来消息框上面的内容(其实就前几个字符就可以了)。
2.用OD打开该程序,在OD的数据窗口按CTRL+B(查找),在弹出来的对话框ASCII一栏中输入这几个字符,
然后找到该字符串开始的位置记录下来,以005645D3为例进行以下步骤。
3.一般弹出对话框都是用MessageBox(A/W),在汇编中该字符创一定要压栈的。所以我们在反汇编窗口CTRL+B来查找该地址,HEX+04一栏中输入"D3 45 56 00"(不包括引号,因为在机器码中一般是倒着存储的),
找到该字符串引用的地址我们看到一下内容:
retn
nop
nop
push 00597863
push 1
push 005645D3 ;这里引用了这个字符串的地址
call 004122C0
add esp, 0C
retn
在这里我们发现这段代码引用了该地址,经过观察可以看到上面就是另外一个函数的返回。这段代码其实是
做格式化字符串的,所以“push 00597863”这个指令是这段代码的首个指令,记录它的地址,我们以004D5565
为例。接下来我们查找哪里的代码引用了该地址,反汇编窗口CTRL+B,找到引用这个地址的指令。
4.经查找我们发现A地址处引用了这个地址,A地址处的代码如下:
call 00548560
add esp, 0C
test eax, eax
jnz 004DF6B2 ;这个指令是重点,如果EAX为零往下执行,不为零跳转。我们把JNZ改成JZ
inc ebp
lea edx, dword ptr [esp+8]
mov eax, ebp
mov dword ptr [esi+40], eax
mov eax, esi
mov dword ptr [esp+8], 004D5565 ;这里引用了这个地址,向上查看代码
mov dword ptr [esp+C], esi
我们找到引用的地方网上查找看是否有跳转指令,果然上面几行就出现了JNZ,如果这个是爆破点的话我们改完就可以解除限制了。
JNZ对于我们来说很容易更改,只要改为JZ就可以了或者直接改为JMP。改完我们在这里设断点(目的是重新加载后能找到这个地方),
然后运行,到此处F9下去,此时已经进入程序主界面,限制已经解除了。
4.CTRL+F2重新加载程序,找到刚才设断点的地方。这时还是JNZ,我们把JNZ改为JZ或者JMP,选择这句代码,然后右键Copy to executable
->Selection,然后新出现的窗口中右键Save File,把修改保存的EXE中。这样新保存这个EXE就没有运行个数限制了。
需要注意的是先备份好文件,以免把文件改坏不能运行。希望本贴能对想学爆破法破解的新手有所帮助
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课