cjteam 发表于 2009-8-5 22:24:52

快速定位处理 WL/TMD Checksum

快速定位处理 WL/TMD Checksum.感谢zenix nooby 帮忙 学到几种处理wl/tmd checksum的方法 ,笨人摸索了另一个比较简单的方法 看图吧

首先使用16进制工具查找原加壳程序的crc (最后的4个字节) 16进制 复制( ED 96 3A A0 )
http://www.unpack.cn/images/default/attachimg.gif http://www.unpack.cn/attachments/month_0906/20090629_731e75425556679fc1377uwtnOOkQhmn.jpg
http://www.unpack.cn/images/attachicons/image.gif 1.jpg (141.89 KB)
2009-6-29 23:54






od加载原加壳程序 F9 运行 搜索 最后4字节的16进制 (ED 96 3A A0 )记录 地址 0130EFDD 关闭od

http://www.unpack.cn/images/default/attachimg.gif http://www.unpack.cn/attachments/month_0906/20090629_daacb785bd2886c174eea5yChporIO0v.jpg
http://www.unpack.cn/images/attachicons/image.gif 2.jpg (114.35 KB)
2009-6-29 23:54




od加载修改后的程序 F9 运行出现错误crc校验错误 不用管 搜索地址 0130EFDD新的crc(19 8E 3A A0)

http://www.unpack.cn/images/default/attachimg.gif http://www.unpack.cn/attachments/month_0906/20090629_6f5f440741d3c88c41caiJALxcttuvGp.jpg

作者:夜如晾水
link:http://www.unpack.cn/viewthread.php?tid=37674

cjteam 发表于 2009-8-5 22:29:40

patch WinLicense Checksum(不知道啥版本!!!)od+strong载入程序,od调试选项设置为中断新模块(DLL),F9数次,观察模块窗口当加裁IMAGHLP.DLL时进入模块。CTRL-N找到CheckSumMappedFile下断,取消中断新模块(DLL);重新跑程序。
中断在CheckSumMappedFile。
观察堆栈:0012FF28   00DF5DA8AA.00DF5DA8
取消断点,CTRL-G到00DF5DA8下断,F9
向上拉一下
0012FF2C   04250000
0012FF30   00752FFCAA.00752FFC
0012FF34   00DF5CBBAA.00DF5CBB
0012FF38   00DF5CBFASCII "Jnu"
0012FF3C   00D7C3A7AA.00D7C3A7

PIMAGE_NT_HEADERS CheckSumMappedFile(
__in   PVOID BaseAddress,      //0012FF2C   
__in   DWORD FileLength,//0012FF30   
__outPDWORD HeaderSum,//0012FF34   
__outPDWORD CheckSum//0012FF38   
);
这里不是真正的CHECKSUM,还要经过运算的。
取消断点,HR 0DF5CBF,F9
0012FF34   00756E4AAA.00756E4A
0012FF38   EBB3A712   原来的CHECKSUM值。就是文件结尾的DWORD.自己可以用UA看一下.
取消断点。HR 12FF38,F9
00C63E7F    8F02            pop   dword ptr
00C63E81^ E9 D511FFFF   jmp   00C5505B
把值放到EDX中。EDX值为00C54D30
取消断点。 HR 00C54D30,F9
00C62FD3    FF32            push    dword ptr
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

cjteam 发表于 2009-8-5 22:36:40

附加一些讨论。

xtor:
我拿了wl 2.08加壳样本来测试,这样不行的。我早些时候发的(帖子已转到上面的回复)
这个是WL2.08正确PATCH CHECKSUM的方法,看看大家还有没有更快捷的方法。

夜凉如水:
我从1.855 测试到2080 没任何问题 难道有特列吗

xtor:
原帖由 夜凉如水 于 2009-6-30 08:05 发表
我从1.855 测试到2080 没任何问题 难道有特列吗
你可以试下tuts4you那个2.080的样本,肯定不行,不可能在内存中找到CRC的值,已经给擦除了。

faint88:
我还是用的老办法LoadLibraryA下硬断一直狂按到加载imagehelp.dll时CheckSumMappedFile下硬断 然后bp FreeLibrary

ZeNiX:
剛才試了 Themida 2.0.6.5 的主程序.
1. 用夜凉如水的方法沒成功.
2. 用 faint88 的方法, 確實出來了. (直接看暫存器).
3. 用 Shoooo 對 WL 1.8.5.5 的方法 (要 XOR 的那個), 也沒成功.
建議夜凉如水也可以試看看.

xtor:
楼主的这种方法只适合早期版本的FILE PATCH-SINGLE SIGN选项的。
2.0x以前用SHOOOO的方法
2.0X-2.065用faint88
2.07要用FREELIBARY下断就找到了。
2.08要用我发的帖子的方法,很快就找到正确值。

daihu37 发表于 2009-8-5 22:48:36

高手啊,学习偶

lxcjy 发表于 2009-8-6 11:55:29

谢谢,学习一下

crackforchina 发表于 2009-8-25 21:13:30

学习一下patch checksum
页: [1]
查看完整版本: 快速定位处理 WL/TMD Checksum