首页
社区
课程
招聘
[求助]使用劫持dll的方式注入的问题
发表于: 2012-6-26 00:36 10835

[求助]使用劫持dll的方式注入的问题

2012-6-26 00:36
10835
这个劫持dll 注入,是不是就是 覆盖, 并且调用原先的dll模块。
将原先的模块中的所有导出函数都提供一个接口???

大致是不是这么个意思呢??

最近发现用这劫持方式将模块注入进游戏,会方便很多..并且灵活性也更高点..

下面那附件我我自己写的测试,哪位有空的,麻烦看一下那个是不是属于劫持方式注入了dll呢??

代码很简单,dllA.dll  修改为 testdllA.dll  然后 dllB.dll 修改为 dllA.dll   
然后再injection.exe 假如为游戏的话,我测试了, 使用dllb.dll 中创建的对话框去读取 .exe进程中的地址是可以读的..

但不知道这种注入方法做辅助,会出现例如bug之类的情形吗??


新手,求教育.....

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
大致就是LZ所说的意思
因为是注入为目的
所以不改变被劫持模块的功能
只需要导入其EAT表
调用的时候就跳转过去
再把这些跳转以与其同名接口的方式导出
这样你就可以在模块入口执行自己的代码
然后放入目标进程文件夹就可以了
2012-6-26 03:18
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
是的,不需要考虑参数,直接jmp跳转
VOID  __declspec(naked)  NewFunction()
{
  __asm  jmp  OldAddress;
}
然后就可以在def文件里面导出
LIBRARY "YouCplusplusFileName"
EXPORTS
OldFunctionName @1
...
2012-6-26 12:15
0
雪    币: 7
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
嗯,明白了,谢谢了哦,这次已经真的测试成功了..
待会,就找个游戏合适的dll测试看看..
O(∩_∩)O~。。这劫持真的是太强大了,感觉..
这下一来,就可以很容易地安装定时炸弹了。....
2012-6-26 13:03
0
雪    币: 0
活跃值: (954)
能力值: ( 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
2012-6-27 13:39
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
把你的DLL改成 xxxxx.dll 放到demo.exe 目录中去
上传的附件:
2012-6-27 15:03
0
雪    币: 257
活跃值: (67)
能力值: ( 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  //恢复
2012-6-28 22:26
0
雪    币: 7
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
解释的很是详细,手工硬编码测试了 ,是可以加载dll的. 这方法按说不亚于劫持..
但是具体的编码过程,应该具体是怎么实现的呢?

2012-6-29 06:54
0
雪    币: 250
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
shellcode注入  类似PE感染啊
2012-6-29 07:49
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
添加一个区段->OEP-Jmp - > 添加后的区段->动态获取ker基址->然后Load下

其实这里可以X几下,模拟LoadLibraryA头进行加载的,但我为了稳定性没这样做.
2012-6-29 09:56
0
雪    币: 7
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了哦....  

2012-6-29 15:20
0
雪    币: 3237
活跃值: (3286)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
13
启动注入~  论坛的贴子有实现的代码
2012-6-29 15:46
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
启动注入可以直接让游戏自己注入DLL的,非EXE 远线程插入DLL的。原理同上
2012-6-29 16:42
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
对于没有文件校验的程序,确实可以这样注入...shellcode...
2012-6-29 16:54
0
游客
登录 | 注册 方可回帖
返回
//