首页
社区
课程
招聘
CreateProcess中CREATE_SUSPENDED,用于不用的区别
发表于: 2006-7-1 18:15 10530

CreateProcess中CREATE_SUSPENDED,用于不用的区别

2006-7-1 18:15
10530
CreateProcess中CREATE_SUSPENDED,使用后是会将程序暂停,这个时候目标程序是否初始化?
因为我将DLL注入目标进程直接调用目标程序中的某个函数,在CREATE_SUSPENDED这个状态下是失败,但是如果完整将程序启动却又是成功的。
所以请教两者有什么本质却别

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
2
SUSPENDED,程序处于非活动状态。注入以后当然无法正常调用。

建议你看看操作系统原理。讲unix的那种。
2006-7-1 19:37
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
suspend 的进程中没有运行的线程, 所以loadlibrary 是不能成功的, 因为这需要线程运行才可以. 程序完全运行起来自然可以了.
2006-7-1 20:19
0
雪    币: 217
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有没有办法让程序不处于活动状态又可以调用到目标程序里的某个地址函数的方法?
2006-7-1 20:23
0
雪    币: 199
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
弄个线程不久得了。在suspend后,用CreateRemoteThread创建的线程是可以运行的
2006-7-1 21:56
0
雪    币: 225
活跃值: (142)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
因为Suspend了吗,Suspend就是挂起的意思,进程的主线程没活动,这个时候的状态可以认为是用Olldbg加载进程后停在OEP处的状态,EIP指向入口地址,代码段和数据段映射完毕,IAT也计算并加载完毕。

如果想HookDll,我以前的方法就是把OEP的代码改了,跳到一段自己的代码写的代码里面,可以用WriteProcMemory在目标进程中找个地方写进去,然后挂DLL或者修改IAT什么的,最后跳回来恢复一下,resumethread就可以了。
2006-7-1 22:05
0
雪    币: 217
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 playar 发布
弄个线程不久得了。在suspend后,用CreateRemoteThread创建的线程是可以运行的


CreateRemoteThread 好象一般的用法都是把自己的函数写入目标地址,但是我已经知道目标进程函数的地址了,能否直接在这个API里写入那个地址直接筹建?
2006-7-2 18:38
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
8
最初由 leahart 发布
CreateRemoteThread 好象一般的用法都是把自己的函数写入目标地址,但是我已经知道目标进程函数的地址了,能否直接在这个API里写入那个地址直接筹建?

只要那个函数定义符合
DWORD WINAPI ThreadProc(LPVOID lpParameter)
这种形式
2006-7-2 19:11
0
雪    币: 217
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 Isaiah 发布
只要那个函数定义符合
DWORD WINAPI ThreadProc(LPVOID lpParameter)
这种形式


那个函数经过分析有5个参数,
PUSH VAR1
PUSH VAR2
PUSH VAR3
PUSH VAR4
PUSH VAR5
CALL XXXX
ADD ESP, 14H

我在我我的程序里通过结构体,传递参数过来的。不知道这样是否符合?
2006-7-2 19:35
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
10
很不幸,不符合~~。
只有想其他的变通的办法
2006-7-3 00:49
0
游客
登录 | 注册 方可回帖
返回
//