dll 注入

ybblack001 2008-12-14 03:26:40
刚开始学dll注入。
照着例子编写了一个mfc规则的test.dll vc里写的
希望达到在加载时弹出一个对话框。就在inistance函数内添加了一个afxmessagebox()
自己写了一个程序加载一切正常。

现在希望把这个dll注入到记事本里。
也是照例子写的。最后运行成功注入 用loadPE能看见test.dll 但是并没有展现对话框

是注入的时候不执行dll么?

另外我怀疑是在写内存的时候出错了,代码如下

string dllname = "G:\\testfile\\dlltest\\dlltest.dll";
int dlllength =dllname+1;//我怀疑是这个赋值不对,没有取得正确的大小

//..省略
WriteProcessMemory(name.Handle, baseaddress, dllname, dlllength, temp);//这个里面可能没分配正确

如果是大小不对,那请问在c#内如何正确取得dlllength?如果是其他原因也请指出
...全文
103 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ybblack001 2008-12-14
  • 打赏
  • 举报
回复
顺便谁能解释下这个函数?
BOOL WriteProcessMemory(
HANDLE hProcess, //这个我明白目标进程的句柄
LPVOID lpBaseAddress, //目标进程的地址
LPVOID lpBuffer, //指向缓存 缓存内存放了要写入进程内的数据 这样理解没错吧?
//为什么dllname="c:\\1.dll"这种东西都能当这个参数?

DWORD nSize, //写入缓存数据的大小?为什么dllname.length+1 可以当这个参数?
LPDWORD lpNumberOfBytesWritten
);
ybblack001 2008-12-14
  • 打赏
  • 举报
回复
恩 根据1楼2楼的又测试了一下 发现了原因: dllmain 函数内的

switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH:
{
MessageBox( NULL, _T("DLL已进入目标进程。"), _T("信息"), MB_ICONINFORMATION );
}
break;

如果dll写成这种就可以正确显示,但如果创建mfc规则的dll,dllmain函数被mfc的app类封装起来了;本来我是把messagebox放进了inistance函数内--在网上查到说这个就是dllmian 但是加载的时候木有运行 - -!奇怪。我自己手动写的程序却在加载的时候显示出了对话框。
谁能解答一下 :)

slimfeng 2008-12-14
  • 打赏
  • 举报
回复
mark
niitnanfeng 2008-12-14
  • 打赏
  • 举报
回复
学习下,不懂,只能顶下了。
oyljerry 2008-12-14
  • 打赏
  • 举报
回复
把dll路径写入,让process加载
oyljerry 2008-12-14
  • 打赏
  • 举报
回复
把dll路径写入,让process加载
ybblack001 2008-12-14
  • 打赏
  • 举报
回复
1楼的看过了 和我照抄的例子一样 呵呵 很奇怪 为什么动态分配的内存大小取决于dll文件名称字符串所占用的内存大小呢?
2楼的正在看
wuyq11 2008-12-14
  • 打赏
  • 举报
回复
参考
http://blog.csdn.net/kikistorm/archive/2007/04/16/1566650.aspx
http://blog.csdn.net/hua1998/archive/2006/10/10/1328651.aspx
oyljerry 2008-12-14
  • 打赏
  • 举报
回复
blog.csdn.net/hack214/archive/2008/04/11/2283599.aspx

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧