修复吾爱OD的Anti-Anti-Debug
本帖最后由 xiaobang 于 2012-12-31 10:15 编辑最近用吾爱的OD调试一款软件发现屡次被anti debug,于是便着手分析一下。。
首先请朋友们下载下面的附件测试一下自己的OD是否会被Anti。
检测到会显示:found od
未检测会显示:no found od
-----------------------------------------------------------------------------------
下面看看这个程序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:
00434B7F F3:AB rep stos dword ptr es:
00434B81 8D4424 04 lea eax,dword ptr ss:
00434B85 50 push eax
00434B86 E8 9570FDFF call 精英淘宝.0040BC20 ; //调用GetStartupInfoA
00434B8B FF15 9C104000 call dword ptr ds: ; msvbvm60.__vbaSetSystemError
00434B91 8B4424 14 mov eax,dword ptr ss:
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:
00434B9E 85C0 test eax,eax ; //eax 是否为0
00434BA0 75 2E jnz short 精英淘宝.00434BD0
00434BA2 8B4424 20 mov eax,dword ptr ss:
00434BA6 85C0 test eax,eax ; //eax 是否为0
00434BA8 75 26 jnz short 精英淘宝.00434BD0
00434BAA 8B4424 24 mov eax,dword ptr ss:
00434BAE 85C0 test eax,eax ; //eax 是否为0
00434BB0 75 1E jnz short 精英淘宝.00434BD0
00434BB2 8B4424 28 mov eax,dword ptr ss:
00434BB6 85C0 test eax,eax ; //eax 是否为0
00434BB8 75 16 jnz short 精英淘宝.00434BD0
00434BBA 8B4424 18 mov eax,dword ptr ss:
00434BBE 85C0 test eax,eax ; //eax 是否为0
00434BC0 75 0E jnz short 精英淘宝.00434BD0
00434BC2 8B4424 1C mov eax,dword ptr ss:
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身上,当然,不能肯定。则又开始测试。
发现问题是出在一个插件身上,这个插件也是具有反调试功能。
修复方法:
相信大家已经清楚了,删除这个插件也好,修改这个插件也好,配置这个插件也好。靠你们啦。。。
本帖最后由 1354669803 于 2012-12-31 10:19 编辑
我想知道要怎么设置那个插件就不会被检测 本帖最后由 a070458 于 2012-12-31 10:22 编辑
果断删除该插件
难怪次次看到GetStartupInfo都被检测了 以为SOD不给力呢,我错了 表示毫无压力... 附加就没有这个问题了~~~ 有了大牛,确实方便了不少。 {:17_1060:}好东西! 本帖最后由 sdzzb 于 2012-12-31 12:24 编辑
灰常赞同大八的说法,防止Anti。。去掉Olly Advanced插件有最好的效果,原版OD+SOD 目前过任何壳子,无压力 都是大牛们玩的小菜掉到糊涂盆了 菜菜的非原版OD也未检测到