修改已有的应用程序
来源:互联网 发布:java开发工程师规划 编辑:程序博客网 时间:2024/06/10 18:47
FindControl
函数可以通过句柄得到TwinControl类
FindVclControl
函数可以通过绝对坐标得到TWinControl类
FindVclControl内部还是调用了FindControl 函数,
使用这几个函数就可以修改别人的程序类,哈哈。
但是他们有使用的限制
1、只能是Delphi或bcb程序
2、在同一个进程中,别人的程序,不同进程怎么办呢,当然了进程注入。
3、在注入的Dll中使用系统FindControl只能返回nil,原因在FindControl内部
检查是否同一个进程
if (Handle <> 0) and (GetWindowThreadProcessID(Handle, OwningProcess) <> 0) and
(OwningProcess = GetCurrentProcessId) then
begin if GlobalFindAtom(PChar(ControlAtomString)) = ControlAtom then
Result := Pointer(GetProp(Handle, MakeIntAtom(ControlAtom)))
else
Result := ObjectFromHWnd(Handle);
end;
ControlAtomString的形成 , ControlAtomString := Format('ControlOfs%.8X%.8X',
[HInstance, GetCurrentThreadID]);
在注入dll中形成ControlAtomString 当然不会和要注入程序的ControlAtomString 相同了,
怎么办呢,只有重新做一个FindControl了
新的FindControl
function FindControlEx(Handle: HWnd): TWinControl;
var
OwningProcess: DWORD;
ControlAtomString:string;
RM_GetObjectInstance:Cardinal;
begin
Result := nil;
if (Handle <> 0) and (GetWindowThreadProcessID(Handle, OwningProcess) <> 0) and
(OwningProcess = GetCurrentProcessId) then
begin
ControlAtomString:=Format('ControlOfs%.8X%.8X', [GetModuleHandle(nil),
GetWindowThreadProcessID(Handle, OwningProcess)]);
if GlobalFindAtom(PChar(ControlAtomString)) <>0 then
Result := Pointer(GetProp(Handle, MakeIntAtom(GlobalFindAtom(PChar
(ControlAtomString)))))
else
begin
RM_GetObjectInstance := RegisterWindowMessage(PChar(ControlAtomString));
Result:=Pointer(SendMessage(Handle, RM_GetObjectInstance, 0, 0));
end;
end;
end;
- 修改已有的应用程序
- abap修改已有的程序
- oralce修改已有的表为分区表
- Eclipse里修改已有的svn账号
- 如何在VirtualBox里为已有的硬盘修改大小?
- 如何在VirtualBox里为已有的硬盘修改大小?
- hibernate修改数据库已有的对象【简化操作】
- Jxl对已有的excel追加数据或修改数据
- studio修改为本地已有的gradle配置
- 放弃已有的
- 扩展已有的LVM
- C# 如何判断并且激活,最大化已有的外部应用程序的窗口? (源码例程)
- 02-SQLlite3之alter:在已有的表中添加、修改或删除列
- 【Sqlserver】修改数据库表中的数据:对缺失的数据根据已有的数据进行修补
- Oracle-08-修改表结构(对已有的表增删改查)
- SQL高级语句-ALTER TABLE 在已有的表中添加、修改或删除列。
- iptables规则的查看、添加、插入、删除和修改以及删除已有的规则
- 批量修改myeclipse项目中已有的htm文件的编码格式
- SAP电面
- cegui0.7.4中animationSystem存在内存泄漏问题。。。
- greatest least 函数
- setsockopt()改善程序的健壮性
- taskService.completeTask("taskId",map);异常
- 修改已有的应用程序
- CPU多核的线程控制
- 基于Table的企业级CSS样式、隔行换色、鼠标移动、单击换色
- DATEDIFF SQL
- 就业感言:看我的成功就业!
- 安装OpenGrok
- javascript菜鸟:模仿C#的链表类写js的链表(参考过高手代码)
- 1.有3个人去投宿,
- 进程注入方法之 hook