能力值:
( LV2,RANK:10 )
|
-
-
2 楼
这个略叼,前排支持楼主~
|
能力值:
( LV12,RANK:760 )
|
-
-
3 楼
值得一赞~
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
mark
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
谢谢大牛的赞。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
这个真心不错,有学习的地方。。。赞 666666
|
能力值:
( LV5,RANK:70 )
|
-
-
7 楼
代码好乱 看的我好难受
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
值得一赞
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不错。。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
这个不错
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
好N啊。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
08年我就在用这个注射方法了。。。你居然解决新奇?
|
能力值:
( LV4,RANK:50 )
|
-
-
13 楼
把思路整理下,哪里不懂就去看哪里的代码就好了。
|
能力值:
( LV4,RANK:50 )
|
-
-
14 楼
小弟才疏学浅,对我来说新奇。这就是书看少了的下场
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
部分游戏有专门对付这种注射方式的, 主程序启动2次。例如DNF
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
一直想找这方面的教程,楼主帮到了我,感谢
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
牛逼啊。。。。。小白不懂这些
|
能力值:
( LV7,RANK:110 )
|
-
-
18 楼
牛叉,,,,
|
能力值:
( LV4,RANK:50 )
|
-
-
19 楼
一个小小的猜测:注入后再HOOK CreateProcess是不是不管启动多少次,总能保证自己的dll注入了game?
|
能力值:
( LV12,RANK:230 )
|
-
-
20 楼
TP是个渣?什么都不拦?
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
标记,以后思考
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
SuspendThread(hThread);
memset(&Context, 0, 716u);
Context.ContextFlags = 65543;
if ( GetThreadContext(hThread, &Context) )
{
lpBaseAddress = (Context.Esp - 0x480) & 0xFFFFFFE0;
v15 = &Buffer;
if ( str )
{
memcpy(&Dst, str, Size);
v5 = sub_414790(&Buffer, lpBaseAddress + 128);// push addr
v15 = (char *)sub_414800(v5, loadlibraryaddr, v5 - (_DWORD)&Buffer + lpBaseAddress);// call addr
}
v6 = sub_414610(v15, Context.Eax); // mov eax
v7 = sub_414640(v6, Context.Ebx); // mov ebx
v8 = sub_414670(v7, Context.Ecx);
v9 = sub_4146A0(v8, Context.Edx);
v10 = sub_4146D0(v9, Context.Esi);
v11 = sub_414700(v10, Context.Edi);
v12 = sub_414730(v11, Context.Ebp);
v13 = sub_414760(v12, Context.Esp);
sub_4147C0(v13, Context.Eip, v13 - (_DWORD)&Buffer + lpBaseAddress);// jmp
Context.Esp = lpBaseAddress - 4;
Context.Eip = lpBaseAddress;
if ( VirtualProtectEx(pi, (LPVOID)lpBaseAddress, 1152u, 0x40u, &flOldProtect)
&& WriteProcessMemory(pi, (LPVOID)lpBaseAddress, &Buffer, 0x480u, &NumberOfBytesWritten)
&& FlushInstructionCache(pi, (LPCVOID)lpBaseAddress, 0x480u)
&& SetThreadContext(hThread, &Context) )
昨天碰到个程序,在想这是干啥啊。。
看了楼主的分析明白了。。。
|
能力值:
( LV6,RANK:80 )
|
-
-
23 楼
刚好我自己在做。做了一半。看了以后受益匪浅啊。
|
能力值:
( LV6,RANK:80 )
|
-
-
24 楼
这种注入方式很早就有了= =我记得我以前个看雪号写这种注入方式教程还加精了。
|
能力值:
( LV4,RANK:50 )
|
-
-
25 楼
我也纳闷。但是原作者确实是这么做的。估计是TP对这游戏的保护强度不高。
|