社区
ATL
帖子详情
高难度问题,高手请进,exe文件的通讯。
helysan
2005-05-25 10:42:57
我们单位有一个程序,只有exe文件,是用pb6.5编写的。当某个按钮按下时,我想在其事件中的加入用c#或c++写的一个form,这个技术路线走的得通吗?如果不能,有没有其他变通的方法?我们没有源代码!!!
...全文
105
5
打赏
收藏
高难度问题,高手请进,exe文件的通讯。
我们单位有一个程序,只有exe文件,是用pb6.5编写的。当某个按钮按下时,我想在其事件中的加入用c#或c++写的一个form,这个技术路线走的得通吗?如果不能,有没有其他变通的方法?我们没有源代码!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
柯本
2005-05-25
打赏
举报
回复
可以考虑用
CreateRemoteThread试试
但具体实现就复杂了
以下是一个例子,在一个已存在的进程中显示一个MessageBox
typedef struct _RemotePara{//参数结构
char pMessageBox[12];
DWORD dwMessageBox;
}RemotePara;
//远程线程
DWORD __stdcall ThreadProc (RemotePara *lpPara){
typedef int (__stdcall *MMessageBoxA)(HWND,LPCTSTR,LPCTSTR,DWORD);//定义MessageBox函数
MMessageBoxA myMessageBoxA;
myMessageBoxA =(MMessageBoxA) lpPara->dwMessageBox ;//得到函数入口地址
myMessageBoxA(NULL,lpPara->pMessageBox ,lpPara->pMessageBox,0);//call
return 0;
}
void EnableDebugPriv( void )
{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if ( ! OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
return;
if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ){
CloseHandle( hToken );
return;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )
CloseHandle( hToken );
}
int test(DWORD pid)
{
const DWORD THREADSIZE=1024*4;
DWORD byte_write;
EnableDebugPriv();//提升权限
HANDLE hWnd = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,pid);
if(!hWnd)return 0;
void *pRemoteThread =::VirtualAllocEx(hWnd,0,THREADSIZE,MEM_COMMIT| MEM_RESERVE,PAGE_EXECUTE_READWRITE);
if(!pRemoteThread)return 0;
if(!::WriteProcessMemory(hWnd,pRemoteThread,&ThreadProc,THREADSIZE,0))
return 0;
//再付值
RemotePara myRemotePara;
::ZeroMemory(&myRemotePara,sizeof(RemotePara));
HINSTANCE hUser32 = ::LoadLibrary ("user32.dll");
myRemotePara.dwMessageBox =(DWORD) ::GetProcAddress (hUser32 , "MessageBoxA");
strcat(myRemotePara.pMessageBox,"hello\0");
//写进目标进程
RemotePara *pRemotePara =(RemotePara *) ::VirtualAllocEx (hWnd ,0,sizeof(RemotePara),MEM_COMMIT,PAGE_READWRITE);//注意申请空间时的页面属性
if(!pRemotePara)return 0;
if(!::WriteProcessMemory (hWnd ,pRemotePara,&myRemotePara,sizeof myRemotePara,0))return 0;
//启动线程
HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,pRemotePara,0,&byte_write);
if(!hThread){
return 0;
}
return 0;
}
--------------------调用---------------------------
HWND hd=FindWindow(NULL,"STEST"); // 找到运行程序的handle
String s;
if(hd==NULL)
{
MessageBox("Error");
return ;
}
DWORD pid;
GetWindowThreadProcessId(hd,&pid);
test(pid);
吹泡泡的小猫
2005-05-25
打赏
举报
回复
在软家加密技术内幕中提到了一种修改exe可执行文件,注入自己的代码的方法,可以参考
dongfa
2005-05-25
打赏
举报
回复
钩子或许可以.
SetWindowsHookEx
sinall
2005-05-25
打赏
举报
回复
例子在这里:
http://www.vckbase.com/document/viewdoc/?id=277
sinall
2005-05-25
打赏
举报
回复
楼上的CreateRemoteThread方法我研究过,对于楼主的应用,不太可行。
dongfa(一桶江湖)的方法应该可行。
我想的方法是,
1、隐藏它的按钮,创建自己的按钮。
2、使用自己的按钮处理函数。
3、发送原程序的按钮点击事件。
从0到1动手写FAT32
文件
系统
本课程从0行代码开始,逐步迭代一步步地演示了怎样构造一个FAT32
文件
系统。通过这种简单易行的方式,你将逐步深入了解FAT32
文件
系统的工程原理。课程主要分以下几个章节:建立驱动框架分区解析FAT解析
文件
操作分区挂载分区格式化缓冲区管理这几个章节环环相扣,每一步都是在前一步基础之上完成,让你没有多少难度便可了解FAT32的工作机制。除提供课程视频外,课程还配套相应的学习指南文档、工程源码。具体下载方法,请观看第二课时的视频。
如何成为编程
高手
如何成为编程
高手
第一阶段此阶段主要是能熟练地使用某种语言。这就相当于练武中的套路和架式这些表面的东西。第二阶段此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函数)以及所对应语言的自身的库函数。到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用。第三阶段此阶段能深入地了解某个平台系统的底层,已经具有了初级的内功的能力,也就是“手中有
如何成为编程
高手
之路
前言 你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发) 建议: 不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。 回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。 一定要
C语言/C++初学
问题
编程及C/C++初学者 FAQ 本文原为本人在论坛所发若干帖,意在集中解决新手学习C/C++语言时将遭遇到的各类
问题
,网友反馈情况良好,集合修订后作为个人作品贴于此处。 本贴主要分析概念原理和解决方案,不讨论具体程序语法,立足于让初学者能运行起第一个程序。其他事宜如解释入门语法等本文基本不涉及。 本文依照 创作公用约定(署名-非派生作品-非商业用途) 发布。作者(即本人)无更新计划,请勿与
计算机速查向导
Windows操作系统
文件
夹 - [] Tag:计算机维修 Windows操作系统
文件
夹 Cursors
文件
夹 这是鼠标指针
文件
夹,用来存放除系统默认之外的鼠标指针。一些美化系统桌面的程序在美化鼠标时也是将自己的鼠标指针存放在这个
文件
夹中的。可以将
文件
夹中的鼠标指针删除,对Windows系统默认的鼠标指针不会有影响。 Debug
文件
夹 这是系统调试
文件
夹,用来存放系统...
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章