首页
社区
课程
招聘
[求助]求助如何把exe中button改成picture样式???
发表于: 2013-7-7 18:25 7830

[求助]求助如何把exe中button改成picture样式???

2013-7-7 18:25
7830
各位大神,软件没有加壳..可以用Restorator、ResScope、pexplorer打开查看各种资源。。
但是打开后不知道如何把window的标准样式按钮改成图片格式的按钮,主要是先美化一下UI。
如果可以的话,是不是还得导入新的图片资源?按钮如何和导入的资源关联。。
请各位大神指点下。。

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

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
注入一个dll,子类化那个按钮,然后。。。没了。
2013-7-7 18:36
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢这位朋友的回复,百度了下注入DLL我算明白..子类化那个按钮怎么实现?我没有源文件,通过反编译成汇编更改吗??
2013-7-7 22:03
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢cnlamb提供的方法..目前我没有搞懂怎么子类化那个按钮?是修改exe中按钮的继承呢,还是在dll中调用exe中按钮,然后修改其样式???
另外,注入的DLL听说比exe要先启动..这样我dll中如何调用exe中按钮???
求高手指点一二...有例子不胜感激....
2013-7-8 12:26
0
雪    币: 778
活跃值: (208)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
5
最好的方法是给exe导入表添加一个导入DLL,然后在DLL里面实现,把按钮的样式修改自绘的,或者直接把按钮都给删了,直接UI,然后子类化窗口回调,处理绘制操作。只知道这么多了,其他我也不知道了
2013-7-8 12:50
0
雪    币: 778
活跃值: (208)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
6
eXeScope就可以实现修改资源,你看我发的那个键盘锁的源码,那个右上角的关闭按钮就是自绘的,关键不会ps,不然就可以实现三态按钮,三态就是按钮按下去、抬起来、悬浮上去不同的图标,比如QQ的最大化最小化按钮,不过QQ按钮是直接画的
2013-7-8 13:11
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我也知道这样方法不错,从中也学到不少东西...主要是现在不知道如何 通过DLL把exe中的按钮给修改,一直在找方法,那个按钮不能删吧??删了,它自带的事件什么的都没了??我dll中无法还原..
2013-7-8 15:14
0
雪    币: 778
活跃值: (208)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
8
可以删的,你应该把exe原先的回调例程给Hook住,等你处理完了事件后你还得调用它的原先的处理例程。
你可以直接画个按钮,如果用户点击了你画的按钮上,你再把单击的消息传递到exe原先回调例程,让exe自己处理,这应该很简单
2013-7-8 15:26
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你的键盘锁源码看了..关闭键是自绘的....eXeScope可以实现修改资源,但是没有找到能修改把标准按钮修改成图片按钮的方法,还牵扯到导入资源吧
2013-7-8 15:45
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
会者不难,难的就是不会啊...我也郁闷死了..我现在的想法是把exe原来的按钮给隐藏,在用户点击新画的按钮上时把单击消息传递给exe的按钮..我也感觉不难,就是不知道怎么做...
不知道你能否做个小例子??在dll上处理exe按钮的例子,不胜感激啊...
OE-cake_win.rar
我想改的就是这个小游戏...里面操作按钮太多..我倒是可以用eXeScope隐藏一些,不过还想美化下按钮,权当从实践中学习了...
上传的附件:
2013-7-8 15:53
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11


是标准的Button呀,那好办,FindWindowEx->FindWindow->SetWindowLong(GWL_WNDPROC),然后处理各种绘画消息。
上传的附件:
2013-7-10 00:00
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
[QUOTE=cnlamb;1197227]

是标准的Button呀,那好办,FindWindowEx->FindWindow->SetWindowLong(GWL_WNDPROC),然后处理各种绘画消息。[/QUOTE]

你的思路是这样吗?
通过给exe注入DLL,在dll中实现 找到按钮FindWindowEx->FindWindow->SetWindowLong(GWL_WNDPROC),为窗口过程设置新地址? 处理完绘画消息在返回去按钮的正常操作??

话说我明白想怎么做,但是不知道怎么下手啊...最近在狂补C++,然后再深入学习逆向分析...还有好多好多问题,真希望能找个师傅...
2013-7-10 18:06
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
可以参考这个,VB写的,不过基本api。
http://www.pudn.com/downloads159/sourcecode/windows/control/button/detail717437.html
核心模块:http://read.pudn.com/downloads159/sourcecode/windows/control/button/717437/cButton/Module1.bas__.htm
2013-7-11 09:41
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
http://www.pudn.com/ 这个网站一直没有下载的权限,看来得找5个code上传才行...里面确实有很多有用的资料..
谢谢指点..
2013-7-11 10:18
0
雪    币: 2
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
看雪的神人虽然多。看来搞UI也都是硬伤呐。
我来说个方法吧。
下载一个CButtonST类,封装到DLL里。把DLL注入到目标并SetWindowsHookEx( WH_CALLWNDPROC ...
拦截窗口消息。并用CButtonST类子类化目标按扭。

例如在钩子回调函数中:
CButtonST *pBtn = new CButtonST();
pBtn->FromHandle( hButton );//hButton是按扭的句柄。
CWnd *pParentWnd = new CWnd();
pParentWnd->FromHandle( ::GetParent( hButton ) );
pBtn->SubclassDlgItem( ID, pParentWnd );//ID是按扭控件的ID
这样你就可以调用CButtonST类的成员函数来设置按扭的样式了。
2013-7-20 20:46
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
非常感谢,学习了..
2013-7-22 18:58
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
请教下,资源文件需要在哪啊??在封装的DLL里?还是要添加到exe里面去?
2013-8-6 18:12
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
	short	shBtnColor = 30;

	CWnd *pParentWnd = CWnd::FindWindow(NULL,_T("TestCall"));
	HWND hButton=::FindWindowEx(pParentWnd->GetSafeHwnd(),NULL, _T("Button"), _T("子类化"));

	CButtonST *pBtn = new CButtonST();
	pBtn->FromHandle(hButton);							//hButton是按扭的句柄。

	pParentWnd->FromHandle(::GetParent(hButton) );
	pBtn->SubclassDlgItem(1001,pParentWnd );			//ID是按扭控件的ID

	pBtn->SetIcon(131);
	pBtn->OffsetColor(CButtonST::BTNST_COLOR_BK_IN, shBtnColor);


我用上述代码子类化按钮,按钮直接消失了...是不是资源的问题??
2013-8-6 18:34
0
游客
登录 | 注册 方可回帖
返回
//