能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我QQ: 31990839
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
反调试的一种手段,实际进入的是这个函数esp指向的函数
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这句(call skip_key_seh1)怎么返回的?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
真能反调试,原理是什么?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
static void __stdcall KeyStorage_Set(unsigned char Index, void *Value)
{
__asm {
xor eax, eax
mov al, Index
mov edx, Value
call skip_key_seh1//调用SHE安装函数,会把下面这条语句的地址入栈,做为异常处理函数
mov ecx, [esp+0x0c]//这里中异常处理函数的入口,反调试方法我还没有分析出来
push ebx
mov dword ptr [ecx], 0x10017
mov ebx, [ecx+0xB0]
inc ebx
shl ebx, 2
mov eax, [ecx+0xA8]
mov [ecx+ebx], eax
inc dword ptr [ecx+0x0b8]
inc dword ptr [ecx+0x0b8]
xor eax, eax
mov [ecx+20], eax
mov [ecx+24], eax
pop ebx
ret
skip_key_seh1://将call的下面那个地址安装为she处理函数
xor ecx,ecx
push dword ptr fs:[ecx]
mov dword ptr fs:[ecx],esp
inc byte ptr [ecx]//产生异常,转到上面的CLL后面那句
nop
nop
pop dword ptr fs:[ecx]
add esp,4
}
}
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
那个异常处理函数代码大体上是这样的
ContextRecord->ContextFlags = 0x10017;
//ContextRecord->某个元素 = Value;
//某个元素的算法是 (index + 1) * 4
ContextRecord->Eip = ContextRecord->Eip + 2;
ContextRecord->Dr6 = 0;
ContextRecord->Dr7 = 0;
return ExceptionContinueExecution;
不过不知道为什么要这么写!
|
|
|