能力值:
(RANK:1130 )
2 楼
现在流行在程序执行前注入
能力值:
( LV3,RANK:30 )
3 楼
呵呵,看来不花点血本是不行了!对抗静态注入的方法也有!
附件中是用本人自己编写的 PE 保护壳加壳后的 Windows 记事本,因为壳还没有完全写好,还没有加反调试功能。本来不想这么早提到它。即然楼上的大哥说到这一点了,就把它拿出来试试吧!
加壳后的 PE 文件可以对抗反汇编工具的静态分析,想找到它的入口点都很难!你可以分析下试试。看能不能进行静态注入。
能力值:
(RANK:1130 )
4 楼
这里没有调试环境,明天再看你的壳
我说的在程序执行前注入,不是静态注入
是让你的程序在EP执行前,注入一个DLL进去
能力值:
( LV3,RANK:30 )
5 楼
呵呵,具体问题得具体分析。没有什么方法是万能的,你可以把你的注入方法说出来,在这里讨论一下。
能力值:
( LV3,RANK:30 )
6 楼
发这个贴子没有别的意思。前几天在起凡面试时面试官问到有没有什么好的方法来对抗动态注入,当时没想出来。这几天失业中,闲着没事又把这个问题想了一下,就想出了这么一个办法,反正闲着也是闲着。就把它发出来请大家指点一下!
能力值:
( LV3,RANK:30 )
7 楼
唉,失业的日子真难过呀。我都快一个星期没吃饭了!
能力值:
( LV9,RANK:180 )
8 楼
附件拿掉了?
能力值:
( LV3,RANK:30 )
9 楼
不好意思,因为那只是个半成品现在不合适拿出来。在此表示诚挚的道歉!
能力值:
( LV3,RANK:30 )
10 楼
本来以为面试官问到的误码题大家会很关注,没想到这么冷清。
大家闲着没事出来凑凑热闹呀。关于软件保护的,什么反汇编引擎、虚拟机编写、API 保护、PE 头变形、代码加密等等等等话题都可以过来侃呀!
能力值:
( LV3,RANK:30 )
11 楼
晕了,出去捡几个矿泉水瓶子去,好拿来换晚饭!
能力值:
(RANK:1130 )
12 楼
汗,刚刚回来,发现你附件没了。。这也太小气了吧
我的注入方式,献丑一下了
BOOL StartGame(const char *pGamePath, const char *pCmdLine, const char *pInjectDLL)
{
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
CONTEXT ctx = {0};
BOOL bRetValue = FALSE;
BYTE buf[400] = {0};
DWORD NewEip;
DWORD num;
DWORD p;
DWORD q;
if(!pGamePath || !pCmdLine || !pInjectDLL)
return FALSE;
DWORD pfnLoadLibraryA = (DWORD)GetProcAddress(LoadLibrary("Kernel32"), "LoadLibraryA");
si.cb = sizeof(si);
bRetValue = CreateProcessA(pGamePath,
(LPSTR)pCmdLine,
NULL,
NULL,
FALSE,
CREATE_SUSPENDED,
NULL,
NULL,
&si,
&pi);
if(!bRetValue)
{
// 启动失败
DbgString ("启动游戏失败\n");
return bRetValue;
}
ctx.ContextFlags = CONTEXT_FULL;
if(GetThreadContext(pi.hThread, &ctx))
{
DbgString ("Context : \neax: %08X\necx: %08X\nedx: %08X\nebx: %08X\nesp: %08X\nebp: %08X\nesi: %08X\nedi: %08X\neip: %08X\n",
ctx.Eax,
ctx.Ecx,
ctx.Edx,
ctx.Ebx,
ctx.Esp,
ctx.Ebp,
ctx.Esi,
ctx.Edi,
ctx.Eip
);
}
else
return bRetValue;
//NewEip = (ctx.Esp - sizeof(buf)) & 0xFFFFFFE0;
NewEip = (DWORD)VirtualAllocEx(pi.hProcess, NULL, sizeof(buf), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
p = 0;
buf[p++] = 0x60; // pushad
buf[p++] = 0x9C; // pushfd
buf[p++] = 0x68; // push xxxxxxxx
q = p;
p += 4;
buf[p++] = 0xE8; // call LoadLibraryA
*(DWORD*)&buf[p] = pfnLoadLibraryA - (NewEip + p + 4);
p += 4;
buf[p++] = 0x9D; // popfd
buf[p++] = 0x61; // popad
//buf[p++] = 0xB8; // mov eax,
//*(DWORD*)&buf[p] = ctx.Eax;
//p += 4;
//buf[p++] = 0xB9; // mov ecx,
//*(DWORD*)&buf[p] = ctx.Ecx;
//p += 4;
//buf[p++] = 0xBA; // mov edx,
//*(DWORD*)&buf[p] = ctx.Edx;
//p += 4;
//buf[p++] = 0xBB; // mov ebx,
//*(DWORD*)&buf[p] = ctx.Ebx;
//p += 4;
//buf[p++] = 0xBC; // mov esp,
//*(DWORD*)&buf[p] = ctx.Esp;
//p += 4;
//buf[p++] = 0xBD; // mov ebp,
//*(DWORD*)&buf[p] = ctx.Ebp;
//p += 4;
//buf[p++] = 0xBE; // mov esi,
//*(DWORD*)&buf[p] = ctx.Esi;
//p += 4;
//buf[p++] = 0xBF; // mov edi,
//*(DWORD*)&buf[p] = ctx.Edi;
//p += 4;
buf[p++] = 0xE9; // jmp [orgeip]
*(DWORD*)&buf[p] = ctx.Eax - (NewEip + p + 4);
p += 4;
p ++;
strcpy((char*)&buf[p], pInjectDLL);
*(DWORD*)&buf[q] = NewEip + p;
//VirtualProtectEx(pi.hProcess, (LPVOID)NewEip, sizeof(buf), PAGE_EXECUTE_READWRITE, &num);
WriteProcessMemory(pi.hProcess, (LPVOID)NewEip, (LPCVOID)buf, sizeof(buf), &num);
FlushInstructionCache(pi.hProcess, (LPVOID)NewEip, sizeof(buf));
ctx.Eax = NewEip;
//
SetThreadContext(pi.hThread, &ctx);
ResumeThread(pi.hThread);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return TRUE;
}
能力值:
(RANK:350 )
13 楼
哈哈,海风是成心要砸人家饭碗啊
能力值:
(RANK:570 )
14 楼
STRONG OD的注入DLL 的代码吧。。。是挺好用的
能力值:
(RANK:1130 )
15 楼
这个是外挂的常用注入方式之一
StrongOD用的是远程线程和调试模式改eip
能力值:
(RANK:570 )
16 楼
CREATE_SUSPENDED 标记启动进程,我以前刚写注入代码的时候,也是这么写的,但是在注入的DLL需要引入某些系统DLL(具体是哪个忘记了,年代久远)的时候,会导致程序某些环节的初始化出问题,某些API会返回失败。
能力和时间有限,没找到问题的原因。后来都是先等上半秒,停止所有线程再注DLL的。
你的这种注入能保证一切正常?
能力值:
(RANK:1130 )
17 楼
我测试不多,没有大范围使用过,没碰到过失败的情况
能力值:
( LV15,RANK:2473 )
18 楼
保险一点就是先在ep处写个EBFE
ResumeThread
Sleep
SuspendThread
恢复ep两个字节
注入DLL
能力值:
(RANK:570 )
19 楼
是N年前做的一个玩意。。。用IE跑URL,找挂马网站的。。。只要CPU占用低于90%就起一个新进程,在网站完全载入之后,IE会自动退出的。。。
那个时候也用过10楼的方法,但是一般跑不过1星期,连续跑几天之后,会发现CPU占用100%,其中一些IE进程卡死了。我的调度程序也不工作了。。。。
能力值:
( LV3,RANK:20 )
20 楼
可以在进程回调里注入 ,那时kernel32还没加载
能力值:
( LV7,RANK:100 )
21 楼
觉得楼主的专研精神真是太强大了~~~专门下载了来顶的
能力值:
(RANK:1130 )
22 楼
LZ的壳呢?
我一直在等呢
能力值:
( LV9,RANK:180 )
23 楼
进来看LS拆新壳的
能力值:
(RANK:1130 )
24 楼
我是来忽悠的
能力值:
( LV15,RANK:2473 )
25 楼
我是来看LS忽悠的