好友
阅读权限40
听众
最后登录1970-1-1
|
本帖最后由 xiaobang 于 2012-12-31 10:15 编辑
最近用吾爱的OD调试一款软件发现屡次被anti debug,于是便着手分析一下。。
首先请朋友们下载下面的附件测试一下自己的OD是否会被Anti。
检测到会显示:found od
未检测会显示:no found od
anti debug.rar
(3.59 KB, 下载次数: 426)
-----------------------------------------------------------------------------------
下面看看这个程序Anti-Debug主体:
00434B70 83EC 44 sub esp,0x44
00434B73 B9 11000000 mov ecx,0x11
00434B78 33C0 xor eax,eax
00434B7A 57 push edi
00434B7B 8D7C24 04 lea edi,dword ptr ss:[esp+0x4]
00434B7F F3:AB rep stos dword ptr es:[edi]
00434B81 8D4424 04 lea eax,dword ptr ss:[esp+0x4]
00434B85 50 push eax
00434B86 E8 9570FDFF call 精英淘宝.0040BC20 ; //调用GetStartupInfoA
00434B8B FF15 9C104000 call dword ptr ds:[0x40109C] ; msvbvm60.__vbaSetSystemError
00434B91 8B4424 14 mov eax,dword ptr ss:[esp+0x14]
00434B95 5F pop edi
00434B96 85C0 test eax,eax
00434B98 75 36 jnz short 精英淘宝.00434BD0 ; //eax 是否为0
00434B9A 8B4424 14 mov eax,dword ptr ss:[esp+0x14]
00434B9E 85C0 test eax,eax ; //eax 是否为0
00434BA0 75 2E jnz short 精英淘宝.00434BD0
00434BA2 8B4424 20 mov eax,dword ptr ss:[esp+0x20]
00434BA6 85C0 test eax,eax ; //eax 是否为0
00434BA8 75 26 jnz short 精英淘宝.00434BD0
00434BAA 8B4424 24 mov eax,dword ptr ss:[esp+0x24]
00434BAE 85C0 test eax,eax ; //eax 是否为0
00434BB0 75 1E jnz short 精英淘宝.00434BD0
00434BB2 8B4424 28 mov eax,dword ptr ss:[esp+0x28]
00434BB6 85C0 test eax,eax ; //eax 是否为0
00434BB8 75 16 jnz short 精英淘宝.00434BD0
00434BBA 8B4424 18 mov eax,dword ptr ss:[esp+0x18]
00434BBE 85C0 test eax,eax ; //eax 是否为0
00434BC0 75 0E jnz short 精英淘宝.00434BD0
00434BC2 8B4424 1C mov eax,dword ptr ss:[esp+0x1C]
00434BC6 85C0 test eax,eax ; //eax 是否为0
00434BC8 75 06 jnz short 精英淘宝.00434BD0
00434BCA 33C0 xor eax,eax ; //清零eax
00434BCC 83C4 44 add esp,0x44
00434BCF C3 retn
00434BD0 83C8 FF or eax,0xFFFFFFFF ; //eax=0xffffffff
00434BD3 83C4 44 add esp,0x44
00434BD6 C3 retn
下面内容copy 自看雪,手太冷,你懂的:
链接:http://bbs.pediy.com/showthread.php?threadid=31447
OllyDbg 在使用 CreateProcess 创建进程时,需要传递
STARTUPINFO 的结构的指针,
而常常我们并不会一个一个设置其结构的值,
连把其他不用的值清0都会忽略,
而 ollydbg 也这样做了,
我们可以使用 GetStartupInfo 检查启动信息,
如果很多值为"不可理解"的,那么就说明自己不是由 explorer 来创建的.(explorer.exe 使用 shell32 中 ShellExecute 的来运行程序, ShellExecute 会清不用的值)
还有一点 ollydbg 会向 STARTUPINFO 中的 dwFlags 设置 STARTF_FORCEOFFFEEDBACK,而 explorer 不会
////////////////////////
//ex
#include <windows.h>
#include <stdio.h>
#pragma comment(linker, "/subsystem:windows /entry:main")
int main()
{
STARTUPINFO si;
GetStartupInfo(&si);
if (
(si.dwX != 0) ||
(si.dwY != 0) ||
(si.dwXCountChars != 0) ||
(si.dwYCountChars != 0) ||
(si.dwFillAttribute != 0) ||
(si.dwXSize != 0) ||
(si.dwYSize != 0) ||
(si.dwFlags & STARTF_FORCEOFFFEEDBACK)
)
{
MessageBox(NULL, "found debugger!", NULL, 0);
}
else
{
MessageBox(NULL, "no found debugger!", NULL, 0);
}
return 0;
}
下面是测试:
原版od + sod 未检测
吾爱od + sod 被检测
CLGOD + sod 被检测
于是便有了以下总结:
SOD实际上已经处理啦这个问题,膜拜下海风前辈,问题并非在OD身上,当然,不能肯定。则又开始测试。
发现问题是出在一个插件身上,这个插件也是具有反调试功能。
修复方法:
相信大家已经清楚了,删除这个插件也好,修改这个插件也好,配置这个插件也好。靠你们啦。。。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|