首页
社区
课程
招聘
[求助][求助]请教一个关于远程代码注入的问题,困惑半个月了
发表于: 2014-4-26 00:04 5068

[求助][求助]请教一个关于远程代码注入的问题,困惑半个月了

2014-4-26 00:04
5068
大家好,最近本人在研究信息安全方面的技术,关于远程代码注入(不用dll)技术,直接使用CreateRemoteThread,将要执行的代码注入到远程进程中,还可以通过同时注入结构体参数 的方式,给要运行的函数提供参数,但问题是,我注入的代码中还有固定格式回调函数要调用,由于全局和静态变量都无法在远程进程中使用,也无法接受其他的形参数,请问我有没有什么办法在回调函数中调用注入代码中传过去的结构体参数啊?折腾到吐血,烦请高手支下招哈,谢谢了

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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2153
活跃值: (740)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
把回调也写过去呗,或者共享内存和信号量等跨进程通讯。
2014-4-26 00:22
0
雪    币: 1392
活跃值: (5147)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
3
为何全局变量不能用?请告诉我
2014-4-26 06:39
0
雪    币: 95
活跃值: (119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
同意二楼,回调函数也要写过去,写过去后你的远程线程还要重定向回调函数地址,这很麻烦的
2014-4-26 09:06
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
因为全局变量存放在静态存储区,而不是栈上,在机器码中是给的内存地址,而在本地和远程进程中加载的地址是不同的,所以没法使用。
而且我就是已经把回调函数作为代码注入进去了,重定位问题也解决了,问题是我在回调函数中如何调用我传进来的参数啊? 比如这样
// ----- below code will be inject and execute in remote process ///
static MyMainfunc (MYStruct *pstruct)         //MYStruct 类型我定义的,注入的结构体参数
{
   // do something ....

}
static foo(MYStruct *pstruct)
{
   // do something
}
static CALLBACK FUNCALLBACKPROC (int nCode,WPARAM wParam,LPARAM lParam)
{
    // ......
    // ????   <- 问题在这里,这里我如果需要MYStruct *pstruct ,来得到数据,如何通过
  //                 什么方式来得到啊,这里由于整段代码都是注入到远程的,全局变量是没法用的
}

// ----- up code will inject and execute in remote process  

希望有哪位大仙解救下在下,万分感谢
2014-4-26 09:29
0
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
远程在进程中分配个空间,把需要的结构数据写进去。
2014-4-26 09:52
0
雪    币: 95
活跃值: (119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
代码都已经写到目标进程空间了,结构体不也是一块内存吗,一样可以写到内存空间去呀,回调函数可以重定向,参数重定向一下也可以呀
2014-4-27 23:00
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
了解了,谢谢哈
2014-4-30 13:32
0
游客
登录 | 注册 方可回帖
返回
//