Themida - Winlicense Patch Hwid (修改机器码)
老版本论坛有教程直接找到第一个跳转然后直接搜索[Asm] 纯文本查看 复制代码 cmp eax,ecx
pushfd
那么新版本呢。。新版本就比较麻烦了。。网上资料基本没有。。本菜抛砖引玉一下。。
首先 跟老版本一样。先找到机器码提示。对提示信息API 下断点。msgbox的下层函数 最好。
然后 回到壳段领空。代码格式一般为
[Asm] 纯文本查看 复制代码 push xxx
jmp xxxx
push xxx
jmp xxxx
push xxx
jmp xxxx
push xxx
jmp xxxx
老版本为 第一个跳 比较新的为第二个跳 这里就有一个很有意思的事情了。。TMD的的这个构造结构 是自上而下的。也就是说 push xxxx jmp 的这个结构从最早版本开始就是 1234 这么调用。
所以 你只要找到你提示的返回地址 向上推 一个push jmp 或 两个。这里我说下为什么可能是两个。因为有的会提示 这个key的所属用户。会掉一次key解密。没有的就是一次 有的就是两次。不好区分 你就 上边的两个push jmp 都下硬件执行断点。断下后 全局 ctl+s 查找 命令序列
[Asm] 纯文本查看 复制代码 cmp [r32],r32
pushfd
代码最好肉眼区分下。。至于怎么区分 我就不讲了。。看汇编代码上下文看着顺眼就是了。 找到的都下断点。然后 写脚本记录数据。
假设 我找到的是
[Asm] 纯文本查看 复制代码 00B5F124 CMP dword [edi],esi
脚本内容为
[Asm] 纯文本查看 复制代码 bphws 00B5F124,"x"
Main:
esto
ITOA [edi]
mov vEdi,$RESULT
ITOA esi
mov vEsi,$RESULT
WRTA "LOG.txt","数据1=="+vEdi+"数据2=="+vEsi
jmp Main
记录到的数据会很多。基本上就是 获取DLL空间之后 下面 最开始的数据。具体怎么区分主要靠经验。如果不能区分出来 那么就在 授权和未授权机器上自己跑脚本对比记录文件。找到关键对比数值。
修补很简单。以我这个为例子。
[Asm] 纯文本查看 复制代码 @1:
pushfd
cmp esi,token(对比的数据)
jnz @2
mov [edi],token
@2:
popfd
CMP dword [edi],esi //此处为补码。
jmp xxxx
视频教程我就不录了。。。。觉得逆向没落了。很多东西 再也没有人共享资料了。。。
|