高手挑战:Dll注入后,怎样向窗口界面中添加文本框控件?

sharpen 2008-03-17 12:35:02
高手挑战:Dll注入后,怎样向窗口界面中添加文本框控件?

现在有一应用程序A.
我向其注入了一个Dll
现在的问题是我想通过这个注入的dll向程序A的界面中添加一个文本框.

程序A是vb写的(其实关系不大),我没有原代码
添加文本框是为了拓展一下原来程序的功能,和游戏外挂是一个意思.

因为程序是一个老外写的,交回国外修改要1个月左右.
设备下周就要验收了.
肯定高手指点一下思路!分不够可再加
...全文
666 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
loving_hoping 2009-07-18
  • 打赏
  • 举报
回复
嗯,我碰到了新问题,对话框(主窗体)上加载了一个子对话框,但是这个子对话框无标题类型的,从动态库导出的,我想加一个文本框或标签,怎么弄呢?我晕了好几天了。
nevergone 2008-03-30
  • 打赏
  • 举报
回复
我参考一下17楼的做法
可能可以实现
nevergone 2008-03-30
  • 打赏
  • 举报
回复
偶也在解决这个问题
用远程注入
在DLL开启的线程中
HWND hNewChild = CreateWindow( TEXT("Edit"), TEXT("Hello"), WS_CHILD | WS_VISIBLE, 0, 0, 100, 100, hwnd, (HMENU)MYSTATIC, hInstance, NULL );

不过偶需要建一个消息循环,否则创建的控件就会消失

不知道有没有什么方法可以把消息循环去了
nevergone 2008-03-30
  • 打赏
  • 举报
回复
我用17楼的方法实现了
不过界面会失去响应
sharpen 2008-03-19
  • 打赏
  • 举报
回复
lisunlin0 :

方便的话能给我一份代码参考一下吗?
sharpen 2008-03-19
  • 打赏
  • 举报
回复
lisunlin0 :

我是用远程加载的方式实现的dll的注入.
问题是我现在在目标窗体上绘制了一个文本框以后,上面不出现光标
不能输入.
我感觉就是绘制的文本框没有加入到目标窗口的消息循环当中去.
创建一个子线程能解决么?
还是我要在子线程中自己处理所以的消息呢?
sharpen 2008-03-19
  • 打赏
  • 举报
回复
cnzdgs :
能够绘制出文本框,但是点击不出现光标.
txk1452 2008-03-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sharpen 的回复:]
cnzdgs :

我实验过你说的步骤.能画出文本框,但是好象不能响应键盘的输入.
似乎没有加入到主窗体的消息循环当中.
我好象没有调用ShowWindow,问题是不是在这呢?
[/Quote]

你要子类化窗口过程才行啊!~~~
CubieZhou 2008-03-18
  • 打赏
  • 举报
回复
11楼正解。微软的推荐做法就是这样.MSDN上有详细说明。
LS的方法没有试过,貌似可行。
sunlin7 2008-03-18
  • 打赏
  • 举报
回复
我写过与这个类似的代码,只可惜今天在网吧上网,没办法把源代码贴上。
sunlin7 2008-03-18
  • 打赏
  • 举报
回复
哪有那么麻烦啊,
如果你的DLL是用CreateRemoteThread(..,pLoadLibaray,...);这种远程加载DLL的方式加载到目标进程里面的,建设你在DLLMain里面新开一个实现目标功能的线程ThreadProc(LPVOID Param);。
如果你用类似RawPeApi这样的加载,直接写一个基于对话框的应用程序。
ThreadProc(LPVOID Param)
{
EnumWindow(EnumWinProc,...); // 枚举所有顶层窗口
}

EnumWinProc(hwnd, param)
{
if( GetWindowProcessThreadId(hwnd) == GetProcessId()) // 顶层窗口的进程ID与当前进程ID相等
{
DialogParam(,hWnd,....); // 以这个窗口为父窗口创建对话框,而这个对话框就是EditBox并且进行处理的即可。
}

}
Juchiyufei 2008-03-18
  • 打赏
  • 举报
回复
up
datablader 2008-03-18
  • 打赏
  • 举报
回复
需要在DLL中得到这个窗口的句柄,再用SubClass的方式,对这个窗口的创建部分进行修改,动态创建一个BUTTON,按理说,基本可以做所有的事情吧。
laowang2 2008-03-18
  • 打赏
  • 举报
回复
up
sharpen 2008-03-17
  • 打赏
  • 举报
回复
哦,呵呵,我的使用方式不是这样的啦

我这个的dll是向其他应用程序里添加的我自己的代码(不改变其他程序的代码的情况下).
原理就和游戏的外挂似的.

:)
Aeolia_Tao 2008-03-17
  • 打赏
  • 举报
回复
就是把DLl做成一个文本框的控件,拖到界面上使用
还有就是你的DLL到底是用来做什么的
sharpen 2008-03-17
  • 打赏
  • 举报
回复
Aeolia_Tao:
呵呵,不太理解
Aeolia_Tao 2008-03-17
  • 打赏
  • 举报
回复
拙见:把dll改写成ActiveX控件
sharpen 2008-03-17
  • 打赏
  • 举报
回复
WAKU & wbf420 :

我先做一下试验!
cnzdgs 2008-03-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sharpen 的回复:]
我实验过你说的步骤.能画出文本框,但是好象不能响应键盘的输入.
似乎没有加入到主窗体的消息循环当中.
我好象没有调用ShowWindow,问题是不是在这呢?
[/Quote]
ShowWindow应该只会影响到控件的显示,而且也不需要自己处理消息。用鼠标点文本框可以出现文本输入的光标吗?
加载更多回复(7)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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