能力值:
( LV2,RANK:10 )
|
-
-
2 楼
CWnd *pParentWnd = CWnd::FindWindow(NULL,L"TestCall");
pParentWnd->GetDlgItem(1001)->SetWindowText(_T("修改名称")); //1001实为TestCall程序的按钮ID
经过测试,这段代码是管用的,只是需要鼠标移动到按钮上面,触发一下绘制按钮的消息...
请高手指点下其他的问题吧,不胜感激
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
呵呵,移动窗口,改变窗口大小,一般而言是比较容易的,因为程序本身没有做防护,你这么做就可以了。
加载图片的话,你要明白一件事情,如果你不改变它原有按钮类的行为,应该也是很简单的。你类似做就可以了
但是,类似于CBUTTONST这样的类实现,如果你要改变它类的行为。恐怕你还是要开辟空间,执行完代码之后再跳回去。当然,这个也不难,注意下权限就好。。。我一直觉的最麻烦的的就是对方程序有防护,不能写入,有时候连入口点都找不到。。当然,我是超级菜鸟。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
问题二: 只是加载图片,一般不需要。(假设对方CButton类本身就支持图片加载)
问题三:这个完全没有问题。可以的。只是如果对方有防护,注入本身有难度。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
你说的防护是加壳吗??这个没问题...我先实现问题二的功能,我更是超级菜鸟...
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
加壳了的程序不能直接获取指针等操作
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
当然我已经确认第三方程序是没壳的..
我在解决第二个问题的时候,通过cbuttonST类子类化第三方程序按钮的时候,那个按钮就不见了..到底啥原因呢??就这个问题我已经问了大半个月了,是没法解决还是太低级了,没人原因回答??
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
呵呵。大半个月,不知道你其中空闲时间有多少。说实话。这个问题对于会的人来说。实在是很简单。但是很明显。真正会的人恐怕没有这个闲功夫回答这个启发意义不大的入门问题。(高手不需要回答。而要告知菜鸟需要啰嗦一大堆话)。。。所以,最好还是自己研究吧。。这是我能给你的建议,虽然,我目前也没能力回答,不过要是有大半个月,每天有个1,2个小时空闲的话。我觉的一般都应该能分析出来。
当然,如果可以话。你分析成功之后。把你分析的过程弄成文档发出来。我相信有无数的菜鸟会无比感激。
|
能力值:
( 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的按钮..."这个功能了..
可是显示的结果还是让是失望,正常运行,想子类化的按钮也不见了....
于是我没辙了,特来求救....
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
顶下...问题还没有解决呢....
|
|
|