首页
社区
课程
招聘
[讨论]百撕不得骑姐的注入方式[已解决]
2012-12-11 22:29 38119

[讨论]百撕不得骑姐的注入方式[已解决]

2012-12-11 22:29
38119
   附件是别人给的一个注入器,易语言写的,无源码。
   经测试,可以注入mydll.dll到GPK保护的游戏,也能注入到XUETR.EXE。
   初步分析这个注入器没有加载驱动,用XUETR.EXE查看被注入的游戏,看不到注入的DLL模块,应该是内存注入DLL。但是内存注入DLL的话也得先OpenProcess目标进程,然后申请内存空间,写入DLL的数据到目标进程吧。XUETR.EXE和GPK保护的游戏都无法在用户层调用OpenProcess,WriteProcessMemory对其进行操作。
      用XUETR.EXE查看这个注入器未安装任何全局钩子,而且如果先开了GPK保护的游戏,再安装全局钩子也无法把DLL注入到GPK保护游戏。
   这个注入器是怎么把DLL注入到目标进程的呢?百撕不得骑姐啊。。

        根据23楼 半斤八两 给出的资料已分析出注入原理了,其实就是 注入内存中的DLL 和 修改线程EIP上下文注入DLL的方法相结合. 重写R3层API的目的只是绕过R3层HOOK,使OD下断NtOpenProcess等API无效.重写API的目的说白了就是不让别人分析他用了哪些API,跟注入方式无关.

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (48)
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Dstlemoner 2012-12-11 22:43
2
0
好脏的针管啊。。。
雪    币: 107
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
哟哟哟哟 2012-12-11 22:44
3
0
我猜测是输入法
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pcmyth 2012-12-11 22:57
4
0
注入的时候看一下输入法
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
淡定疯着 2012-12-11 22:58
5
0
好威武的标题啊~~膜拜
雪    币: 29
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iokey 2012-12-11 22:59
6
0
   回3、4楼,用工具监视过,注入器未释放输入法安装文件。完全找不到输入法注入后遗留的痕迹。
如果是输入法注入,肯定得释放输入法文件到system32目录下。所以应该不是输入法。
   注入器没有加壳,大家可以用OD附加注入器,bp ImmInstallIMEA下断。我测试过在安装输入法要用到的API处下断,断不下来。
雪    币: 158
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
smnk 2012-12-11 23:07
7
0
:……莎莎姐居然是处!?
雪    币: 86
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Membered 2012-12-11 23:12
8
0
要看就 直接去看这个 exe 注入器 是不是直接注入那个进程  ,利用了其他进程进行注入 是可以滴!
雪    币: 29
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iokey 2012-12-11 23:18
9
0
 回8楼,GPK保护的游戏和XUETR.EXE的驱动保护貌似没有白名单,不能用其他进程进行注入吧?望赐教,谢谢。
雪    币: 86
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Membered 2012-12-11 23:20
10
0
你试试 监控一下 再说吧....我没有说白名单 ,只是一种猜想...监控 这个注入器 注入了哪些进程 还是很容易有思路的
雪    币: 29
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iokey 2012-12-11 23:40
11
0
回10楼,我OD附加注入器,Openprocess ZwOpenprocess NtOpenProcess
WriteProcessMemory ZwWriteVirtualMemory NtWriteVirtualMemory
下断都断不下来。应该没有注入到其他进程。
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liefeng 2012-12-12 10:04
12
0
希望有懂得给 说下。。。
雪    币: 14
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wsliangy 2012-12-12 10:23
13
0
ida扫了下,发现里边有很多可疑代码,即不属于一个注入器应当做的事儿。。不懂易语言开发,不知道是因为包含了库才导致,还是xxxx。。我也不能不得骑姐
雪    币: 378
活跃值: (2847)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
appview 2012-12-12 10:23
14
0
很强大值得学习下,但是测试中发现一些问题,下面是个很简单的dll,注入XueTr后弹出消息框退出XueTr进程,然后zhuru进程就卡死了。
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

void Test();

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                                         )
{
        switch (ul_reason_for_call)
        {
        case DLL_PROCESS_ATTACH:
                Test();
                break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
                break;
        }
        return TRUE;
}

void Test()
{
        char szModuleName[MAX_PATH+1] = {0};
        char szInfo[512] = {0};
        GetModuleFileName(NULL, szModuleName, MAX_PATH);
        sprintf(szInfo, "PID:%d\nEXE:%s", GetCurrentProcessId(), szModuleName);
       
        MessageBox(NULL, szInfo, "In Test", 0);

        if (strstr(szModuleName, "Xue"))
        {
                TerminateProcess(GetCurrentProcess(), 0);
        }       
}
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
黑不起 2012-12-12 11:06
15
0
我承认,我抱着邪恶的目的进来了。。。
雪    币: 107
活跃值: (311)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Fido 2012-12-12 11:32
16
0
你是准备来骑姐的吗?
雪    币: 3685
活跃值: (3869)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
caolinkai 2012-12-12 11:49
17
0
哈哈。。。原来如此
雪    币: 199
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
gkdark 1 2012-12-12 11:52
18
0
- -有易语言 查看恶心症状,实在是没心情看下去了,!谁有心情可以去看看
.text:13151BBB push offset aMydll_dll ; "\\mydll.dll"
.text:13151BC0 push dword ptr [ebp-14h]
.text:13151BC3 mov ecx, 2
.text:13151BC8 call sub_131410E9
.text:13151BCD add esp, 8
.text:13151BD0 mov [ebp-18h], eax
.text:13151BD3 mov ebx, [ebp-14h]
.text:13151BD6 test ebx, ebx
.text:13151BD8 jz short loc_13151BE3
.text:13151BDA push ebx
.text:13151BDB call sub_131671AF
.text:13151BE0 add esp, 4

代码大概就在上面的位置!
雪    币: 1412
活跃值: (4209)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
IamHuskar 4 2012-12-12 12:08
19
0
马克,上完课再来骑姐
雪    币: 65
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
meijingogo 2012-12-12 12:11
20
0
哈哈,我也想骑姐。谁骑完了,分享下。要码的更好。
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
黑不起 2012-12-12 14:19
21
0
更关注“百撕”的过程。。。
雪    币: 186
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mulin 2012-12-12 15:00
22
0
Ctrl+F :int 2E

重写了Ring3的API而已
雪    币: 221
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
半斤八兩 10 2012-12-12 15:03
23
0
13151B1E  /.  55            push ebp                                 ;  // 注入DLL

13162E03  /.  55            push ebp                                 ;  // 枚举进程

1315DB64  /$  55            push ebp                                 ;  // 枚举进程列表

1316372C  |.  8907          |mov dword ptr ds:[edi],eax              ;  // PEB枚举进程

13180F3D  |> \FF55 FC       call [local.1]                           ;  // 回调函数

131692A2   .  8038 00       cmp byte ptr ds:[eax],0                  ;  //  判断DLL路径是否为空

13169F27   .  E8 676F0500   call zhuru.131C0E93                      ;  // 读取DLL文件

13151B93  |.  E8 771B0000   call zhuru.1315370F                      ;  // OpenProcess

13149B3F eax!=0xba                               .  CD 2E         int 2E                                      ;  // 重写部分Ntdll

7C92D22E ntdll.ZwDeleteBootEntry                  B8 3D000000     mov eax,3D
7C92D5FE ntdll.ZwOpenProcess                      B8 7A000000     mov eax,7A
7C92D65E ntdll.ZwOpenThread                       B8 80000000     mov eax,80
7C92D7FE ntdll.ZwQueryInformationProcess          B8 9A000000     mov eax,9A
7C92D97E ntdll.ZwQueryVirtualMemory               B8 B2000000     mov eax,0B2
7C92D88E ntdll.ZwQueryObject                      B8 A3000000     mov eax,0A3
7C92D97E ntdll.ZwQueryVirtualMemory               B8 B2000000     mov eax,0B2
7C92D51E ntdll.ZwMapViewOfSection                 B8 6C000000     mov eax,6C                                  ; ZwMapViewOfSection
7C92D4CE ntdll.ZwLockVirtualMemory                B8 67000000     mov eax,67
7C92D88E ntdll.ZwQueryObject                      B8 A3000000     mov eax,0A3
7C92CFEE ntdll.ZwClose                            B8 19000000     mov eax,19
7C92D17E ntdll.ZwCreateSection                    B8 32000000     mov eax,32
7C92DEFE ntdll.ZwUnlockVirtualMemory              B8 0A010000     mov eax,10A
7C92DF0E ntdll.ZwUnmapViewOfSection               B8 0B010000     mov eax,10B
7C92D62E ntdll.ZwOpenSection                      B8 7D000000     mov eax,7D
7C92D7FE ntdll.ZwQueryInformationProcess          B8 9A000000     mov eax,9A
7C92D60E ntdll.ZwOpenProcessToken                 B8 7B000000     mov eax,7B
7C92CF0E ntdll.ZwAdjustPrivilegesToken            B8 0B000000     mov eax,0B
7C92DC9E ntdll.ZwSetInformationProcess            B8 E4000000     mov eax,0E4
7C92DE2E ntdll.ZwSuspendProcess                   B8 FD000000     mov eax,0FD
7C92D9FE ntdll.ZwReadVirtualMemory                B8 BA000000     mov eax,0BA
7C92DB2E ntdll.ZwResumeProcess                    B8 CD000000     mov eax,0CD
7C92D20E ntdll.ZwDelayExecution                   B8 3B000000     mov eax,3B
7C92D17E ntdll.ZwCreateSection                    B8 32000000     mov eax,32
7C92D80E ntdll.ZwQueryInformationThread           B8 9B000000     mov eax,9B
7C92DE3E ntdll.ZwSuspendThread                    B8 FE000000     mov eax,0FE
7C92DCAE ntdll.ZwSetInformationThread             B8 E5000000     mov eax,0E5
7C92DFBE ntdll.ZwYieldExecution                   B8 16010000     mov eax,116
7C92D3AE ntdll.ZwGetContextThread                 B8 55000000     mov eax,55                                  ; ZwGetContextThread
7C92D08E ntdll.ZwCreateEvent                      B8 23000000     mov eax,23
7C92D29E ntdll.ZwDuplicateObject                  B8 44000000     mov eax,44                                  ; ntdll.ZwDuplicateObject
7C92DBAE ntdll.ZwSetContextThread                 B8 D5000000     mov eax,0D5                                 ; ntdll.ZwSetContextThread
7C92DB3E ntdll.ZwResumeThread                     B8 CE000000     mov eax,0CE                                 ; ntdll.ZwResumeThread
7C92DF4E ntdll.ZwWaitForSingleObject              B8 0F010000     mov eax,10F
雪    币: 211
活跃值: (152)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hovey 2012-12-29 16:10
24
0
这标题邪恶了
雪    币: 1
活跃值: (321)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haxk 2013-3-1 12:00
25
0
我试了的确可以注入GPK
游客
登录 | 注册 方可回帖
返回