能力值:
( LV4,RANK:50 )
|
-
-
2 楼
大致就是LZ所说的意思
因为是注入为目的
所以不改变被劫持模块的功能
只需要导入其EAT表
调用的时候就跳转过去
再把这些跳转以与其同名接口的方式导出
这样你就可以在模块入口执行自己的代码
然后放入目标进程文件夹就可以了
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
是的,不需要考虑参数,直接jmp跳转
VOID __declspec(naked) NewFunction()
{
__asm jmp OldAddress;
}
然后就可以在def文件里面导出
LIBRARY "YouCplusplusFileName"
EXPORTS
OldFunctionName @1
...
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
嗯,明白了,谢谢了哦,这次已经真的测试成功了..
待会,就找个游戏合适的dll测试看看..
O(∩_∩)O~。。这劫持真的是太强大了,感觉..
这下一来,就可以很容易地安装定时炸弹了。....
|
能力值:
( LV3,RANK:30 )
|
-
-
5 楼
在教你一种方法,EXE和DLL天人合一。
1:在EXE空白的地方,写一段shellcode进去,让EXE先jmp到你的shellcode里面去。
2:给你段shellcode。
60 9C 64 A1 30 00 00 00 8B 40 0C 8B 70 1C AD 8B 40 08 05 7B 1D 00 00 8B D8 68 00 00 7D 03 FF D3
9D 61
|
能力值:
( LV3,RANK:30 )
|
-
-
6 楼
把你的DLL改成 xxxxx.dll 放到demo.exe 目录中去
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
好吧,我来解释并完善下。。。
nt!_PEB_LDR_DATA
+0x000 Length : Uint4B
+0x004 Initialized : UChar
+0x008 SsHandle : Ptr32 Void
+0x00c InLoadOrderModuleList : _LIST_ENTRY
+0x014 InMemoryOrderModuleList : _LIST_ENTRY
+0x01c InInitializationOrderModuleList : _LIST_ENTRY
+0x024 EntryInProgress : Ptr32 Void
nt!_LIST_ENTRY
+0x000 Flink : Ptr32 _LIST_ENTRY
+0x004 Blink : Ptr32 _LIST_ENTRY
nt!_LDR_DATA_TABLE_ENTRY
+0x000 InLoadOrderLinks : _LIST_ENTRY
+0x008 InMemoryOrderLinks : _LIST_ENTRY
+0x010 InInitializationOrderLinks : _LIST_ENTRY
+0x018 DllBase : Ptr32 Void
+0x01c EntryPoint : Ptr32 Void
+0x020 SizeOfImage : Uint4B
+0x024 FullDllName : _UNICODE_STRING
+0x02c BaseDllName : _UNICODE_STRING
+0x034 Flags : Uint4B
+0x038 LoadCount : Uint2B
+0x03a TlsIndex : Uint2B
+0x03c HashLinks : _LIST_ENTRY
+0x03c SectionPointer : Ptr32 Void
+0x040 CheckSum : Uint4B
+0x044 TimeDateStamp : Uint4B
+0x044 LoadedImports : Ptr32 Void
+0x048 EntryPointActivationContext : Ptr32 Void
+0x04c PatchInformation : Ptr32 Void
pushad //保存寄存器
pushfd //保存Flag标志寄存器
mov eax,fs:[00000030] //得到进程环境块PEB
mov eax,[eax+0C] //得到PEB->PEB_LDR_DATA
mov esi,[eax+1C] //得到PEB->PEB_LDR_DATA->LIST_ENTRY,即进程的模块链表InInitializationOrderModuleList
lodsd //等效于 mov eax,[esi] ,得到LIST_ENTRY.Flink,下一个模块链表,即kernel32.dll的PEB->PEB_LDR_DATA->PLIST_ENTRY
mov eax,[eax+08] //得到kernel32.dll的模块基址
add eax,00001D7B //得到LoadLibrary的函数地址
mov ebx,eax //LoadLibrary的函数地址传给ebx
push 037D0000 //你要加载的模块全路径名字串指针
call ebx //call LoadLibrary
popfd //恢复Flag标志寄存器
popad //恢复
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
解释的很是详细,手工硬编码测试了 ,是可以加载dll的. 这方法按说不亚于劫持..
但是具体的编码过程,应该具体是怎么实现的呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
shellcode注入 类似PE感染啊
|
能力值:
( LV3,RANK:30 )
|
-
-
11 楼
添加一个区段->OEP-Jmp - > 添加后的区段->动态获取ker基址->然后Load下
其实这里可以X几下,模拟LoadLibraryA头进行加载的,但我为了稳定性没这样做.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
|
能力值:
( LV4,RANK:40 )
|
-
-
13 楼
启动注入~ 论坛的贴子有实现的代码
|
能力值:
( LV3,RANK:30 )
|
-
-
14 楼
启动注入可以直接让游戏自己注入DLL的,非EXE 远线程插入DLL的。原理同上
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
对于没有文件校验的程序,确实可以这样注入...shellcode...
|
|
|