• 标 题:这个行吗? (2千字)
  • 作 者:DimRacker
  • 时 间:2001-5-14 0:40:57
  • 链 接:http://bbs.pediy.com

《推箱子v1.6(230关)》破解方法

    由于小生水平较低,文章中难免有错误之处,还请大师指正。谢谢!
    我是用“标志位法”破解的,没有一步步的追它的sn。
进入《推箱子》,添入姓名:DimRacker 号码:34343434
ctrl+N进TRW2K/bpx hmemcpy/F5/点“注册”/bd1/按14下F12/F10,到下面
0167:00402731 MOV EAX,[EBP+FFFFFDCC]  停到这儿。
:
之间略过若干行。因为我要找的是它的注册标志位,所以不管它是怎么算的。
一直按F10,(很长,看清楚,有捷径:)直到下面
:
0167:00402CB6 CMP BYTE CARGADOR!@Regist@Registered,00  可疑!d一下,0167:0048A1DC为00,保险起见,F9/bpm 0167:0048A1DC/bd*
0167:00402CBD JNZ NEAR 0040319B  不跳。
经验证,0167:00402CBD若跳转则注册成功。标志位找到了,你可以在程序启动时用它拦住,改为免注册版。不过我不崇尚暴力。:)
继续吧。进入《推箱子》,添入姓名:DimRacker 号码:34343434
ctrl+N进TRW2K/be3/F5/点“注册”/bd3,到下面
0167:00401DBA MOV BYTE CARGADOR!@Regist@Registered,01  先置1。
0167:00401DC1 MOV DWORD [EBP-04],01  停到这儿。
0167:00401DC8 MOV EAX,[EBP-04]
0167:00401DCB MOV AL,[EBP+EAX+FFFFFEC5]  总算出来了。此时AL为注册号的第一位。先别忙着抄号。
0167:00401DD2 MOV EDX,[EBP-04]
0167:00401DD5 CMP AL,[EBP+EDX+FFFFFF2A]  此时[EBP+EDX+FFFFFF2A]为刚输入的注册号的第一位。d一下可知sn有6位:343434
好啦,在0167:00401DCB行打d EBP+EAX+FFFFFEC5,将它和后边5位字符抄下来,这就是正确的注册号。
懒得抄的话可以在0167:00401DD5行打d EBP+EDX+FFFFFF2A,将6位号直接写入到343434的位置上。
0167:00401DDC JZ 00401DF1  相同才跳。
0167:00401DDE MOV BYTE CARGADOR!@Regist@Registered,00  将标志位重置为0。
0167:00401DE5 MOV BYTE CARGADOR!@Regist@ReadReg,00
0167:00401DEC JMP 004020A3  要是到了这儿就没戏了。
0167:00401DF1 INC DWORD [EBP-04]
0167:00401DF4 CMP DWORD [EBP-04],BYTE +07  轮一遍。
0167:00401DF8 JNZ 00401DC8
0167:00401DFA CMP BYTE CARGADOR!@Regist@Registered,00  判断是否注册。
0167:00401E01 JZ NEAR 004020A3  要是到了这儿就没戏了。
0167:00401E07 CMP BYTE CARGADOR!@Regist@ReadReg,00
0167:00401E0E JNZ NEAR 004020A3  要是到了这儿就没戏了。
0167:00401E14 MOV BYTE CARGADOR!@Regist@ReadReg,00
:
OK!搞定。
注:
    此程序每次注册均有一个随机的序号,所以你解出的注册号不能用于其它场合。但可以在注册后将C:\WINDOWS\Msimgsiz.cfg copy to 未注册的机子里使之注册。当然也可以写注册机,再不行就……我还是不崇尚暴力。:)
    此外,此游戏的关数记录在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced下,RegistryNum为打过的关数,RegistrySys为当前的关数。第1关的值:0xFFFFFF39=4294967097

DimRacker
23:57 2001-05-13