|
winhex这个编辑器功能很强大,可以改ram。当初出来新版本而老注册号不能用时,
只好自己解决。好像从9.1*版本到现在的9.41,我都是这么做的,连跟踪都不用做,
找特征串,几分钟就搞定。有了注册码,不知大家还感不感兴趣,还是贴出来,
供参考。遇到新版本也可以试试。
要求:W32dasm,任意16进制编辑器,呵呵,比如老版本的winhex
下面以V9.25版为例,关键代码如下:
:00448611 mov dword ptr [2*edi+0044B8A6], eax
:00448618 jmp WINHEX.00448680
:0044861A mov eax, dword ptr [0044D180]
:0044861F call WINHEX.0042C608
:00448624 cmp eax, dword ptr [0044D184]
1 :0044862A jne 0044864A ->*******此处让它跳到0044864E,即不用做下面的比较
16进制751E改为EB22。4E-2C=22为跳的长度
:0044862C cmp byte ptr [0044E95D], 00
2 :00448633 jne 0044864E ->*******就是上面要改的地址
:00448635 mov al, 03
:00448637 call WINHEX.0040B5AC
:0044863C not ax
:0044863F movzx eax, ax
:00448642 cmp eax, dword ptr [0044D15C]
:00448648 je 0044864E
:0044864A xor eax, eax
:0044864C jmp WINHEX.00448650
3 :0044864E mov al, 01 ->********跳到这里,要赋值了
4 :00448650 mov byte ptr [0044EE8B], al ->****记下0044EE8B,它就是整个程序
判断的特征地址。如为1表示注册过,因此将程
序中所有mov byte ptr [0044EE8B], 00都让它
赋1
例如:
:00438111 call WINHEX.004049F8
:00438116 mov dword ptr [0044FCD4], eax
:0043811B call WINHEX.0043679C
:00438120 cmp byte ptr [edi+0000189F], 00
:00438127 je 00438130
:00438129 mov byte ptr [0044EE8B], 00 ***一个需要改的地方
:00438130 push 00000000
:00438132 mov eax, dword ptr [0044B00C]
mov eax, dword ptr [0044B00C]
上面是代码,拿到一个新版本,先用w32dasm反编译,然后:
1。搜索特征串mov dword ptr [2*edi+
只有一个,找到下面的jne处,改为强制跳转,例如改为jmp 0044864e,
跳转长度16进制一减就可以。
2。看0044864e处将al=1赋值给什么地址,如0044ee8b,记下
3。查找所有赋0语句,例如mov byte ptr [0044EE8B], 00
很快找到一个,记下其16进制机器码,例如c6058bee440000,就不用找了。
全部将其替换为c6058bee440001
4。随便一个16进制编辑器,修改即可。 |
|