能力值:
( LV2,RANK:10 )
|
-
-
2 楼
hnhuqiong对付themdia的文章在那里啊
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
没有高手回答一下?
|
能力值:
( LV9,RANK:1210 )
|
-
-
4 楼
你指的是修复哪一部分?
vm之外的,没有多少特别的,自己跟一次就知道了.
有篇Themida updated xptotector,大部分修复相关的东西都涉及了,是俄文的在WASM。
to hnhuqiong:还玩混淆代码清理吗
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
最好能教我怎么一步一步的修复了,俄文的还是看不懂啊,不能解决问题!
|
能力值:
( LV6,RANK:90 )
|
-
-
6 楼
什么版本的themida?
|
能力值:
( LV9,RANK:1210 )
|
-
-
7 楼
用在线翻译软件来看,我也是这样看的。
另外,很多细节已经忘了,没有时间来重新熟悉写教程。只能大致
说一下。我想你还是跟一下更好,还是那句话,自己跟一下什么都清
楚了。
壳代码中有VM保护代码,在VM内搜索popad/popf,这是vm的出口,对
所有出口下断以免跟飞了。
1. 在dump前,应完成以下步骤。
避开iat加密(改4个跳转以及自校验)。
获取被patch的 jmp [iat]代码地址,用脚本或另写个程序,修复被
改为E9 xx xx xx xx的jmp [iat]代码。
获取bound-dll数据,写个程序解出来。
这些东西在跟的过程中都可以看见,有些数据壳使用完后销毁了。
2. 这时可以dump一次,反汇编,搜索对wsprintf的调用,有部分是
SDK,从参数可以看出来,是成对出现的,用OllyScript可以解决。
直接把eip置过去运行(在下一句下硬件断点),即可解码。完成后
nop掉这些wsprinf调用.
3. 用类似2的办法解决ENCRYPT_START/ENCRYPT_END和CLEAR_START/CLEAR_END
保护的代码(后一个我没碰到过),这些宏为18 bytes,只要在后面下硬件断
点即可(这种保护看起来是call到壳代码)。
ENCRYPT_START/ENCRYPT_END是成对出现的,先解码,然后才能看到重新
加密代码的call,完成后nop掉这些call。
4. 上面的2,3是在dump点完成的,再次dump,修复iat
5. patch对运行线程数的检测
6. 现在只剩vm保护代码的修复了。这种代码是连续2个jmp到壳代码,
然后是连续的push xxx/jmp xxx。这种代码的修复我没有简单的办法。
我以前的做法基本是手工修复的,没有实战价值。很多东西也没有吃透。
如果有时间也许会再看。
我记得的就这些了,你最好还是自己跟一跟。
|
能力值:
( LV9,RANK:170 )
|
-
-
8 楼
softworm版主:
请教一个问题 Themida1.7.3.0在原有的 1.3.5.5基础上增加反调试器都有哪些手段(能告诉我api我自己跟就行),以前的hnhuqiong那篇文章可以用Ollydbg加载并运行的,现在的版本加壳后不是说找到DEBUGGER,就是异常退出。
|
能力值:
( LV9,RANK:1210 )
|
-
-
9 楼
1730我没有跟过,试过一下1800 demo,anti-debug是增强了。我的OD是改过的,报检测到debugger。跳过一处可以跑。
代码用VM保护了,具体实现不清楚。但是可以定位,Themida用CreateFile自己加载的kernel32内的IsDebuggerPresent,找到这个位置下断,会执行到这里。执行后返回到壳代码后,push/jmp会再次进入VM,这段代码内有问题,会从错误出口走,报检测到debugger。
正确的出口应该到这串push/jmp下面一点,稍为试试可以看到合理的代码位置,是变形为call的jmp。
在push/jmp到这段有问题的vm代码后,在vm出口下断,断下后把eip置到上面找出的call的地址就行了。
|
能力值:
( LV9,RANK:170 )
|
-
-
10 楼
谢谢 softworm的指点!!
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
谢谢softworm指点,看来这个壳还是很猛,还要继续学习!
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
不懂 先顶起来学习
|
|
|