首页
社区
课程
招聘
[旧帖] [求助]远程进程中写入内存的字符串的显示问题 0.00雪花
发表于: 2014-3-12 16:10 1611

[旧帖] [求助]远程进程中写入内存的字符串的显示问题 0.00雪花

2014-3-12 16:10
1611
本人最近在写远程注入线程函数。主要就是在远程进程里弹一个消息框,显示dll名字

结果碰到如下的问题:

本地调用MessageBox时:

        TCHAR assd[13]=_T("test_dll.dll");
        MessageBox(0,assd,assd,0);
         //本地函数执行正常,消息框显示"test_dll.dll"

但是当在远程调用MessageBox时:

struct _RemoteData
{
LPVOID messageboxaddr;
TCHAR messageboxdata[13];
};

struct _RemoteData *premote;

struct _RemoteData remotedata={hAddr,TEXT("test_dll.dll")};//写入远程进程空间的结构体。haddr是在主函数里获得MessageBox的内存地址

premote=&remotedata;

//远程执行的线程函数  (远程函数和数据都已经写入到指定进程内存中)
static void  WINAPI c_injection(LPVOID addr)
{

typedef int (_stdcall *MESSAGEBOX)(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);//定义了MESSAGEBOX函数

typedef struct
{LPVOID messageboxaddr;
TCHAR messageboxdata[13];}REMOTE;

REMOTE *func_addr;

func_addr=(REMOTE *)addr;
MESSAGEBOX MSGBOX=(MESSAGEBOX)(func_addr->messageboxaddr);//MSGBOX内存有MessageBox真实地址

MSGBOX(0,func_addr->messageboxdata,0,0);

}

//结果远程函数中,确实弹出了消息框,但消息框内容只有首字母“t”,不是字符串"test_dll.dll"。

百思不得其解为什么会这样,求教各位怎么才能让字符串在消息框里完整显示
对了,本人使用的是vs2010

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
已找到解决方法
2014-3-16 13:11
0
游客
登录 | 注册 方可回帖
返回
//