首页
社区
课程
招聘
[原创]发个贴子:“对抗动态注入”,看能不能求个职位
发表于: 2009-8-15 20:52 13950

[原创]发个贴子:“对抗动态注入”,看能不能求个职位

2009-8-15 20:52
13950
公司名称:
职位名称:
招聘人数:
工作地点:
薪水待遇:*
职位描述:
联系人:
联系电话:
电子邮箱:
QQ/MSN:
公司网址:
公司介绍:

其它信息:

本人想找个软件安全方面的工作,最好是 PE 外壳编写或者游戏反外挂。希望招这方面人的单位跟贴留下联系方式,我会尽快投递简历的!
   本人的联系方式:
        手机:15155017727
            邮箱:soxtyv@sina.com
            QQ: 1012035646
     附件中是本人原创的,对抗注入的想法及实现。并有例子。

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (33)
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
2
现在流行在程序执行前注入
2009-8-16 12:34
0
雪    币: 419
活跃值: (188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
呵呵,看来不花点血本是不行了!对抗静态注入的方法也有!
    附件中是用本人自己编写的 PE 保护壳加壳后的 Windows 记事本,因为壳还没有完全写好,还没有加反调试功能。本来不想这么早提到它。即然楼上的大哥说到这一点了,就把它拿出来试试吧!
    加壳后的 PE 文件可以对抗反汇编工具的静态分析,想找到它的入口点都很难!你可以分析下试试。看能不能进行静态注入。
2009-8-16 12:59
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
4
这里没有调试环境,明天再看你的壳

我说的在程序执行前注入,不是静态注入
是让你的程序在EP执行前,注入一个DLL进去
2009-8-16 13:02
0
雪    币: 419
活跃值: (188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
呵呵,具体问题得具体分析。没有什么方法是万能的,你可以把你的注入方法说出来,在这里讨论一下。
2009-8-16 13:11
0
雪    币: 419
活跃值: (188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
发这个贴子没有别的意思。前几天在起凡面试时面试官问到有没有什么好的方法来对抗动态注入,当时没想出来。这几天失业中,闲着没事又把这个问题想了一下,就想出了这么一个办法,反正闲着也是闲着。就把它发出来请大家指点一下!
2009-8-16 13:18
0
雪    币: 419
活跃值: (188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
唉,失业的日子真难过呀。我都快一个星期没吃饭了!
2009-8-16 13:20
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
8
附件拿掉了?
2009-8-16 13:30
0
雪    币: 419
活跃值: (188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
不好意思,因为那只是个半成品现在不合适拿出来。在此表示诚挚的道歉!
2009-8-16 13:33
0
雪    币: 419
活跃值: (188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
本来以为面试官问到的误码题大家会很关注,没想到这么冷清。
大家闲着没事出来凑凑热闹呀。关于软件保护的,什么反汇编引擎、虚拟机编写、API 保护、PE 头变形、代码加密等等等等话题都可以过来侃呀!
2009-8-16 13:38
0
雪    币: 419
活跃值: (188)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
晕了,出去捡几个矿泉水瓶子去,好拿来换晚饭!
2009-8-16 13:41
0
雪    币: 7309
活跃值: (3778)
能力值: (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;
}


2009-8-16 21:41
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
13
哈哈,海风是成心要砸人家饭碗啊
2009-8-16 21:47
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
14
STRONG OD的注入DLL 的代码吧。。。是挺好用的
2009-8-16 22:06
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
15
这个是外挂的常用注入方式之一

StrongOD用的是远程线程和调试模式改eip
2009-8-16 23:43
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
16
CREATE_SUSPENDED 标记启动进程,我以前刚写注入代码的时候,也是这么写的,但是在注入的DLL需要引入某些系统DLL(具体是哪个忘记了,年代久远)的时候,会导致程序某些环节的初始化出问题,某些API会返回失败。

能力和时间有限,没找到问题的原因。后来都是先等上半秒,停止所有线程再注DLL的。

你的这种注入能保证一切正常?
2009-8-17 09:59
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
17
我测试不多,没有大范围使用过,没碰到过失败的情况
2009-8-17 10:21
0
雪    币: 8209
活跃值: (4458)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
18
保险一点就是先在ep处写个EBFE
ResumeThread
Sleep
SuspendThread
恢复ep两个字节
注入DLL
2009-8-17 10:29
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
19
是N年前做的一个玩意。。。用IE跑URL,找挂马网站的。。。只要CPU占用低于90%就起一个新进程,在网站完全载入之后,IE会自动退出的。。。

那个时候也用过10楼的方法,但是一般跑不过1星期,连续跑几天之后,会发现CPU占用100%,其中一些IE进程卡死了。我的调度程序也不工作了。。。。
2009-8-17 10:55
0
雪    币: 290
活跃值: (20)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
可以在进程回调里注入 ,那时kernel32还没加载
2009-8-17 11:06
0
雪    币: 300
活跃值: (179)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
21
觉得楼主的专研精神真是太强大了~~~专门下载了来顶的
2009-8-17 17:10
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
22
LZ的壳呢?
我一直在等呢
2009-8-17 23:54
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
23
进来看LS拆新壳的
2009-8-18 00:38
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
24
我是来忽悠的
2009-8-18 09:14
0
雪    币: 8209
活跃值: (4458)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
25
我是来看LS忽悠的
2009-8-18 10:22
0
游客
登录 | 注册 方可回帖
返回
//