-
-
[原创]Timetrap 函数陷阱,让你有进无回
-
发表于:
2012-8-25 16:22
8244
-
作为砖业的叛逆程序员,我们在分析一个软件时,分析函数是必要的过程.
那有木有办法抵抗,让别人无法分析函数呢?
然而小弟今日突发奇想,只见天空一声巨响,我就闪亮登场,本文章就这样诞生了.
进入正题,这是我
在逆向一些东东时借鉴到的东西,其实这个东西在socket应用上很普遍了.
只是我拿来Anti 调试器的
仓促之下 写的文章 未过多想 雕虫小技,请各位大人莫要见怪.
void Timetrap()
{
//VMBEGIN
DWORD nTime = 0;
_asm //GetTickCount
{
mov edx,0x7FFE0000
mov eax,dword ptr ds:[edx]
mul dword ptr ds:[edx+4]
shrd eax,edx,0x18
mov nTime,eax
}
HA:
printf("Hello World!\n");
_asm //GetTickCount
{
mov edx,0x7FFE0000
mov eax,dword ptr ds:[edx]
mul dword ptr ds:[edx+4]
shrd eax,edx,0x18
sub eax,nTime
cmp eax,1000
jg HA
}
// 重要的一些操作.
_asm //GetTickCount
{
mov edx,0x7FFE0000
mov eax,dword ptr ds:[edx]
mul dword ptr ds:[edx+4]
shrd eax,edx,0x18
sub eax,nTime
cmp eax,1000
jg Byebye
}
return;
Byebye:
ExitProcess(-1);
//VMEND
}
int main(int argc, char* argv[])
{
Timetrap();
getch();
return 0;
}
类似于 Class Private Code,不光是在函数上,在任何隐秘的地方,你都可以隐藏一个陷阱.
这里重要的是对时间的把握,如果函数的时间复杂度神马的超过就会出现死循环.
下面是附件,请各位大人下载 用Visual C++ 6.0 编译之后, 按F7编译,按F5调试,
单步进入 Timetrap函数之后 猛按F10把!
[课程]Android-CTF解题方法汇总!