这个软件是VB编写的都是调用API。在OD中查ascii码和unicode是查不出什么东东来的。
这时我们可以用c32asm这个工具把它载入,用反汇编模式打开。在编辑菜单中把“使用unicode分析字符串”选种,即前面显示对号。然后再在“查看”中点字符串。左边就会出现一个字符串调用的窗口。在滚动条那里往下拉。双击提示信息下面的CALL就会看到关于注册的信息。
::00409122:: 8945 B8 MOV [EBP-48],EAX
::00409125:: C785 58FFFFFF E4284000 MOV DWORD PTR [EBP-A8],4028E4 \->: 注册
::0040912F:: C785 50FFFFFF 08000000 MOV DWORD PTR [EBP-B0],8
::00409139:: FFD3 CALL EBX
::0040913B:: 8D95 60FFFFFF LEA EDX,[EBP-A0]
::00409141:: 8D4D D0 LEA ECX,[EBP-30]
::00409144:: C785 68FFFFFF D0284000 MOV DWORD PTR [EBP-98],4028D0 \->: 请输入注册码:
::0040914E:: C785 60FFFFFF 08000000 MOV DWORD PTR [EBP-A0],8
::0040927A:: C785 58FFFFFF 54294000 MOV DWORD PTR [EBP-A8],402954 \->: 注册成功
::00409284:: C785 50FFFFFF 08000000 MOV DWORD PTR [EBP-B0],8
::0040928E:: FFD3 CALL EBX
::00409290:: 8D95 60FFFFFF LEA EDX,[EBP-A0]
::00409296:: 8D4D D0 LEA ECX,[EBP-30]
::00409299:: C785 68FFFFFF 30294000 MOV DWORD PTR [EBP-98],402930 \->: 注册成功,感谢您的注册!谢谢!
::004092A3:: C785 60FFFFFF 08000000 MOV DWORD PTR [EBP-A0],8
找到该找的地方后用OD再次载入。前往--表达式输入显示注册成功的地址。
这里的注视没有提示,你可以对照C32找出来的信息在这里写上对应的信息。这样方便后面调式。
找到这一段的领空00409070。下断运行。
点注册后断下来后用F8一步步来运行。
在00409179 . FF15 50104000 CALL DWORD PTR DS:[<&MSVBVM60.#596>] ; MSVBVM60.rtcInputBox
这里调用一个inputbox就是输入筐来。这里先自己输一个注册码点确定。然后继续F8运行
在004091D9 . FF92 00070000 CALL DWORD PTR DS:[EDX+700] ; flange.00402212
这里会弹出一个无字的小筐来。直接点确定后回来继续。
在经过一个JGE的跳到来到004091FD . /0F85 DE010000 JNZ flange.004093E1
这个JNZ实现在跳转。如果这里跳了这个注册就泡汤了。一开始输入的注视这里就能很直观的看到。我们就把这个跳转不让它实现。改为JE或者把寄存器里的Z后面双击改为1.这里把Z后面的值改为1后。重新加载软件就会还原的。不管用什么方面。这里反正不能让它跳。
这个跳如果不实现的话下面这个00409203 . BA F0284000 MOV EDX,flange.004028F0 ; HKLM\Software\Dsoft\Register
就会在这个路径的注册表里写东西了。我们可以先看一下现在它显示的这个位置中注册表是个什么样子。一会它要写些什么。
现在我们一直运行就会出现那个可爱的成功界面了。
最后要注意,有些软件需要把下的断取掉。有些会直接跳过去。我们现在调的这个不用取也不会影响什么的。
我们在注册表中可以看到那个多了一个键值。这个类型的可以把它导出来在任何电脑上导入注册。
OK。就到这里。写的有些粗。请谅解。有什么不对之处请多包涵。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!