TA的每日心情 | 无聊 2017-5-31 13:17 |
---|
签到天数: 5 天 [LV.2]偶尔看看I
|
楼主 |
发表于 2009-8-5 22:29:40
|
显示全部楼层
patch WinLicense Checksum(不知道啥版本!!!)od+strong载入程序,od调试选项设置为中断新模块(DLL),F9数次,观察模块窗口当加裁IMAGHLP.DLL时进入模块。CTRL-N找到CheckSumMappedFile下断,取消中断新模块(DLL);重新跑程序。
中断在CheckSumMappedFile。
观察堆栈:0012FF28 00DF5DA8 AA.00DF5DA8
取消断点,CTRL-G到00DF5DA8下断,F9
向上拉一下
0012FF2C 04250000
0012FF30 00752FFC AA.00752FFC
0012FF34 00DF5CBB AA.00DF5CBB
0012FF38 00DF5CBF ASCII "Jnu"
0012FF3C 00D7C3A7 AA.00D7C3A7
PIMAGE_NT_HEADERS CheckSumMappedFile(
__in PVOID BaseAddress, //0012FF2C
__in DWORD FileLength,//0012FF30
__out PDWORD HeaderSum,//0012FF34
__out PDWORD CheckSum//0012FF38
);
这里不是真正的CHECKSUM,还要经过运算的。
取消断点,HR 0DF5CBF,F9
0012FF34 00756E4A AA.00756E4A
0012FF38 EBB3A712 原来的CHECKSUM值。就是文件结尾的DWORD.自己可以用UA看一下.
取消断点。HR 12FF38,F9
00C63E7F 8F02 pop dword ptr [edx]
00C63E81 ^ E9 D511FFFF jmp 00C5505B
把值放到EDX中。EDX值为00C54D30
取消断点。 HR 00C54D30,F9
00C62FD3 FF32 push dword ptr [edx]
00C62FD5 ^ E9 8120FFFF jmp 00C5505B
堆栈中0012FF38 EBB3A712
这里是常规的CISC比较。
取消断点。在C62FD5下断(ps:根据CISC指令的比较方法,就能知道其实这里的ECX就是正常的值了)
写个脚本
looper:
ESTO
cmp ecx,EBB3A712
Jnz looper
pause
运行脚本,停止了。EAX:XXXXXX,ECX:EBB3A712;
用UA把EAX的值写入文件尾就搞定了,就这么简单,不清楚是啥版本,呵呵!
作者:xtor
link:http://www.unpack.cn/viewthread.php?tid=37463 |
|