对幻影v1.5b3中Anti-Debug代码的一点分析
【声明】
我写文章以交流为主,希望大家在转载时能保持文章的完整性。
【前言】
不能上网的日子真是难熬,就把幻影加壳的程序分析了一下。最近写了个"幻影1.5b3解密脱壳的小工具"。今天(2000-08-25)上网一小段时间,就把他发给D.Boy看看。这里我说一点幻影中的Anti-Debug代码。
作者: ljttt
写作日期: 2000-08-23
:0041246A 6A00
push 00000000
<---大循环开始处
:0041246C 6A00
push 00000000
:0041246E 6A00
push 00000000
:00412470 6A00
push 00000000
:00412472 6A00
push 00000000
:00412474 6A00
push 00000000
:00412476 56
push esi
:00412477 FF95A3BB4000 call dword ptr
[ebp+0040BBA3] <---这里的Call调用实际上就是调用CreateFileA函数
:0041247D 83F8FF
cmp eax, FFFFFFFF
:00412480 7568
jne 004124EA
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00412486(C)
|
:00412482 46
inc esi
<---小循环开始
:00412483 803E00
cmp byte ptr [esi], 00
:00412486 75FA
jne 00412482
<---小循环结束
:00412488 46
inc esi
:00412489 803E00
cmp byte ptr [esi], 00
:0041248C 75DC
jne 0041246A
<---大循环结束处
:0041248E EB5A
jmp 004124EA
..............(省略中间的代码)
:004124EA 83F8FF
cmp eax, FFFFFFFF
:004124ED 7406
je 004124F5
:004124EF FF956CBF4000 call dword ptr
[ebp+0040BF6C] <---ExitProcess()
我们来看一下幻影是怎样来超度我们的。
call dword ptr [ebp+0040BBA3]实际上就是CreateFileA函数调用。在大循环中他反复地想创建文件,也就是看你跟踪他没有,所以在
cmp eax,FFFFFFFF 后跳转代码处,你就看着办吧。如果你想继续跟踪,就要跳走。 esi 指向的地址有以下检测内容。
\\.\TRW <---检测TRW
\\.\TRW2000 <---检测TRW2000
\\.\TRWDEBUG <---检测TRW2000
\\.\REGVXD <---检测RegMON
\\.\NTICE <---检测SoftICE
\\.\SICE <---检测SoftICE
\\.\VKEYPROD <---检测....,这是什么东东带的,我还不清楚。:-(
\\.\FILEVXD <---检测FileMON
大循环结束后,通过判断eax是否为-1,来确定幻影加壳的程序是否被跟踪。
【后记】
幻影加壳的程序中破坏了跟踪环境 int 1 和 int 3 的环境,如果你想直接进行跟踪,门都没有。(你有门,快告诉我一声)。所以必须处理一下,才能动态跟踪。我80%是静态分析出来的。看上面的,W32Dasm反汇编的,西西。幻影中有许多值得研究的地方,不过由于这是D.Boy的秘密,不便泄露。所以.....西西。我可不想D.Boy在幻影新版中给我来一段。
Call_killljttt()
{ if( Call_寻找跟踪者()=="ljttt" || Call_寻找跟踪者()=="ljtt" )
{ for(int i=0;i<1000000;i++)
{ Call_发送超级龟派气功("ljttt");
}
return 你死去吧!
}
}
- 标 题:对幻影v1.5b3中Anti-Debug代码的一点分析 (2千字)
- 作 者:ljttt
- 时 间:2000-8-25 7:44:53
- 链 接:http://bbs.pediy.com