首页
社区
课程
招聘
[求助]远程注入中的线程创建问题
发表于: 2008-3-29 19:01 5907

[求助]远程注入中的线程创建问题

2008-3-29 19:01
5907
我准备向Explorer.exe中注入一段自己的代码。

Dll文件如下。

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
    if ( fdwReason == DLL_PROCESS_ATTACH )
    {
        MessageBox (NULL, TEXT("a"), TEXT("a"), 0 );
        HANDLE hThread = CreateThread (NULL, NULL, foo, NULL, NULL, NULL);
        CloseThread (hThread);
    }
    return TRUE;
}

DWORD WINAPI foo( LPVOID lpParameter )
{
    MessageBox (NULL, TEXT("b"), TEXT("b"), 0);
    return 0;
}


经调试发现。
我已经成功的把Dll文件加载进Explorer.exe。
DllMain中的函数都运行正常。
但创建的foo线程会执行莫名其妙的代码。导致Explorer.exe进程出错终止。

希望各位大大能详细说明一下具体原因和解决方法。
小女在这里谢过了~~

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
2
据说在createremotethread远程注入得线程里面不能MessageBox
没有证实。。你换个api
比如debugstring之类得看看
或者记录到文件
2008-3-29 19:34
0
雪    币: 356
活跃值: (38)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
3
MessageBox是可以用的~~
当我把HANDLE hThread = CreateThread (NULL, NULL, foo, NULL, NULL, NULL);这一句注释掉,就一切正常了。
可是我要怎么建立一个线程呢?
2008-3-29 19:40
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
应该是hThread的问题
2008-3-29 21:24
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
5
StackSize.
2008-3-29 21:54
0
雪    币: 356
活跃值: (38)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
6
楼上可不可以说的明白一点?
stacksize参数传0,MSDN上面写是采用默认值。
应该怎么改?
2008-3-30 11:38
0
雪    币: 222
活跃值: (69)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
把 MessageBox (NULL, TEXT("a"), TEXT("a"), 0 );
这一句去掉
2008-4-1 11:47
0
雪    币: 4583
活跃值: (3567)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
8
你的CloseThread (hThread);是Win32 API吗,我怎么在MSDN里找不到?
应该是CloseHandle(hThread);啊。
2008-4-2 09:56
0
雪    币: 339
活跃值: (29)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
MessageBox (NULL, TEXT("a"), TEXT("a"), 0 );
这句代码能够执行与否,取决explorer.exe是否加载user32.dll这个动态链接库,当然好像explorer.exe是加载了的,但是比如注入到winlogon.exe那就不行了。
具体创建线程问题,还需再想想。如果楼主解决了,希望能告诉大家。
2008-4-28 17:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
#include <windows.h>

DWORD WINAPI foo( LPVOID lpParameter )
{
    MessageBox (NULL, TEXT("b"), TEXT("b"), 0);
    return 0;
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
    HANDLE hThread;

    if ( fdwReason == DLL_PROCESS_ATTACH )
    {
        MessageBox (NULL, TEXT("a"), TEXT("a"), 0 );
        hThread = CreateThread (NULL, 0, foo, NULL, 0, NULL);
        CloseHandle (hThread);
    }

    if ( fdwReason == DLL_PROCESS_DETACH )
    {
        TerminateThread(hThread,0);
  }

    return TRUE;
}
2008-4-28 20:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
在VC6测试了下,没发现问题!
2008-4-28 20:36
0
游客
登录 | 注册 方可回帖
返回
//