首页
社区
课程
招聘
[旧帖] 关于修改第三方程序的问题... 0.00雪花
发表于: 2013-8-8 21:36 6194

[旧帖] 关于修改第三方程序的问题... 0.00雪花

2013-8-8 21:36
6194
CWnd *pParentWnd = CWnd::FindWindow(NULL,L"TestCall");
pParentWnd->GetDlgItem(1001)->SetWindowText(_T("修改名称"));  //1001实为TestCall程序的按钮ID


问题一:以上程序获取第三方程序的按钮指针,然后修改它的按钮名称,经测试,是能获取到指针的,但是修改名称无法成功,是什么原因??

问题二:如果我想把按钮改成图片样式(网上找到类似于CBUTTONST这样的类实现),那要加载的图片资源是不是得先在第三方程序里导入??

问题三:是不是可以做个带窗口的DLL,然后注入到第三方程序里,让DLL的窗口靠右显示??

请各位高手指点一二吧,有代码演示下就更妙了...

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
CWnd *pParentWnd = CWnd::FindWindow(NULL,L"TestCall");
pParentWnd->GetDlgItem(1001)->SetWindowText(_T("修改名称"));  //1001实为TestCall程序的按钮ID


经过测试,这段代码是管用的,只是需要鼠标移动到按钮上面,触发一下绘制按钮的消息...

请高手指点下其他的问题吧,不胜感激
2013-8-8 21:37
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵,移动窗口,改变窗口大小,一般而言是比较容易的,因为程序本身没有做防护,你这么做就可以了。
加载图片的话,你要明白一件事情,如果你不改变它原有按钮类的行为,应该也是很简单的。你类似做就可以了
但是,类似于CBUTTONST这样的类实现,如果你要改变它类的行为。恐怕你还是要开辟空间,执行完代码之后再跳回去。当然,这个也不难,注意下权限就好。。。我一直觉的最麻烦的的就是对方程序有防护,不能写入,有时候连入口点都找不到。。当然,我是超级菜鸟。
2013-8-9 08:39
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问题二:  只是加载图片,一般不需要。(假设对方CButton类本身就支持图片加载)
问题三:这个完全没有问题。可以的。只是如果对方有防护,注入本身有难度。
2013-8-9 08:42
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你说的防护是加壳吗??这个没问题...我先实现问题二的功能,我更是超级菜鸟...
2013-8-9 11:05
0
雪    币: 1485
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
加壳了的程序不能直接获取指针等操作
2013-8-9 13:57
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
当然我已经确认第三方程序是没壳的..

我在解决第二个问题的时候,通过cbuttonST类子类化第三方程序按钮的时候,那个按钮就不见了..到底啥原因呢??就这个问题我已经问了大半个月了,是没法解决还是太低级了,没人原因回答??
2013-8-9 14:31
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
呵呵。大半个月,不知道你其中空闲时间有多少。说实话。这个问题对于会的人来说。实在是很简单。但是很明显。真正会的人恐怕没有这个闲功夫回答这个启发意义不大的入门问题。(高手不需要回答。而要告知菜鸟需要啰嗦一大堆话)。。。所以,最好还是自己研究吧。。这是我能给你的建议,虽然,我目前也没能力回答,不过要是有大半个月,每天有个1,2个小时空闲的话。我觉的一般都应该能分析出来。
当然,如果可以话。你分析成功之后。把你分析的过程弄成文档发出来。我相信有无数的菜鸟会无比感激。
2013-8-9 21:30
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我也是觉得会的人很简单..
我从网上找了很多这方面的资料,但是没有一个例子是可以实现 通过指针或者句柄可以修改按钮的类属性,使之可变成图片样式的.
我试过同样一段代码,在A,B程序中..
在A程序里面FindWindow(NULL,L"B"),然后子类化B的按钮.
也在B程序里面FindWindow(NULL,L"B"),然后子类化B的按钮...
结果A程序执行完代码后B的按钮消失不见,而B程序执行完后正常显示.
这个中间我以为是图片资源的问题,所以我请求资源都是用的同样的绝对路径..

好吧,通过上面的实验,我以为不是本程序执行的代码无法执行 "子类化按钮" 的功能,我又把上面的代码写成C.DLL,并把 "子类化按钮的类" 定义为输出类,通过PE工具先把第三方程序c.exe的区段新增一个.SCODE.接着又把C.Dll添加它的输入表.又接着通过OD把它反编译在UPDATAWINDOW函数后JMP到新开的.SCODE中, 编写执行 C.DLL中"子类化按钮的类"后又JMP返回到原来该执行的地方..做完这些工作感觉就相当于在C.EXE中操作了下"也在B程序里面FindWindow(NULL,L"B"),然后子类化B的按钮..."这个功能了..

可是显示的结果还是让是失望,正常运行,想子类化的按钮也不见了....
于是我没辙了,特来求救....
2013-8-9 23:08
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
顶下...问题还没有解决呢....
2013-8-24 15:11
0
游客
登录 | 注册 方可回帖
返回
//