能力值:
( LV2,RANK:10 )
|
-
-
2 楼
注入一个dll,子类化那个按钮,然后。。。没了。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
感谢这位朋友的回复,百度了下注入DLL我算明白..子类化那个按钮怎么实现?我没有源文件,通过反编译成汇编更改吗??
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
感谢cnlamb提供的方法..目前我没有搞懂怎么子类化那个按钮?是修改exe中按钮的继承呢,还是在dll中调用exe中按钮,然后修改其样式???
另外,注入的DLL听说比exe要先启动..这样我dll中如何调用exe中按钮???
求高手指点一二...有例子不胜感激....
|
能力值:
( LV9,RANK:260 )
|
-
-
5 楼
最好的方法是给exe导入表添加一个导入DLL,然后在DLL里面实现,把按钮的样式修改自绘的,或者直接把按钮都给删了,直接UI,然后子类化窗口回调,处理绘制操作。只知道这么多了,其他我也不知道了
|
能力值:
( LV9,RANK:260 )
|
-
-
6 楼
eXeScope就可以实现修改资源,你看我发的那个键盘锁的源码,那个右上角的关闭按钮就是自绘的,关键不会ps,不然就可以实现三态按钮,三态就是按钮按下去、抬起来、悬浮上去不同的图标,比如QQ的最大化最小化按钮,不过QQ按钮是直接画的
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我也知道这样方法不错,从中也学到不少东西...主要是现在不知道如何 通过DLL把exe中的按钮给修改,一直在找方法,那个按钮不能删吧??删了,它自带的事件什么的都没了??我dll中无法还原..
|
能力值:
( LV9,RANK:260 )
|
-
-
8 楼
可以删的,你应该把exe原先的回调例程给Hook住,等你处理完了事件后你还得调用它的原先的处理例程。
你可以直接画个按钮,如果用户点击了你画的按钮上,你再把单击的消息传递到exe原先回调例程,让exe自己处理,这应该很简单
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
你的键盘锁源码看了..关闭键是自绘的....eXeScope可以实现修改资源,但是没有找到能修改把标准按钮修改成图片按钮的方法,还牵扯到导入资源吧
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
会者不难,难的就是不会啊...我也郁闷死了..我现在的想法是把exe原来的按钮给隐藏,在用户点击新画的按钮上时把单击消息传递给exe的按钮..我也感觉不难,就是不知道怎么做...
不知道你能否做个小例子??在dll上处理exe按钮的例子,不胜感激啊...
OE-cake_win.rar
我想改的就是这个小游戏...里面操作按钮太多..我倒是可以用eXeScope隐藏一些,不过还想美化下按钮,权当从实践中学习了...
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
是标准的Button呀,那好办,FindWindowEx->FindWindow->SetWindowLong(GWL_WNDPROC),然后处理各种绘画消息。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
[QUOTE=cnlamb;1197227]
是标准的Button呀,那好办,FindWindowEx->FindWindow->SetWindowLong(GWL_WNDPROC),然后处理各种绘画消息。[/QUOTE]
你的思路是这样吗?
通过给exe注入DLL,在dll中实现 找到按钮FindWindowEx->FindWindow->SetWindowLong(GWL_WNDPROC),为窗口过程设置新地址? 处理完绘画消息在返回去按钮的正常操作??
话说我明白想怎么做,但是不知道怎么下手啊...最近在狂补C++,然后再深入学习逆向分析...还有好多好多问题,真希望能找个师傅...
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
http://www.pudn.com/ 这个网站一直没有下载的权限,看来得找5个code上传才行...里面确实有很多有用的资料..
谢谢指点..
|
能力值:
( 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类的成员函数来设置按扭的样式了。
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
非常感谢,学习了..
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
请教下,资源文件需要在哪啊??在封装的DLL里?还是要添加到exe里面去?
|
能力值:
( 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);
我用上述代码子类化按钮,按钮直接消失了...是不是资源的问题??
|
|
|