如何修改编译好的EXE程序exe软件界面修改工具和标题栏

您的位置: >
> 阿p软件之修改窗口标题 v1.40中文绿色版
阿p软件之修改窗口标题 v1.40中文绿色版
软件大小:1.52M
软件语言:简体中文
软件类型:国产软件
软件授权:免费软件
更新时间:
软件类别:系统其它
软件官网:
应用平台:Windows7, WinVista, Win2003, WinXP, Win2000
网友评分:7.3分
阿p软件之修改窗口标题是一款免费的窗口标题修改器,它能够修改任意一个窗口的标题。使用方法:1、解压缩2、双击文件“apRWT.exe”打开阿p软件。3、随意选中一个活动的窗口,按ctrl+shift+alt+F10组合键。4、弹出阿p软件之修改窗口标题,直接输入新标题确定即可。
阿p软件之修改窗口标题 v1.40中文绿色版
高速下载通道
其它下载地址
感谢您对多多软件的信任,请把这份信任分享给您的朋友!
您的评论需要经过审核才能显示!
软件排行榜
2.78M / 英文 /7.3分
2.78M / 简体中文 /7.3分
26.5M / 简体中文 /8.3分
5.34M / 简体中文 /8分
195K / 简体中文 /8分
9.59M / 简体中文 /7.5分
4.87M / 多国语言 /8.1分
1.86M / 简体中文 /8分
7.2M / 简体中文 /7.5分
1.51M / 英文 /8分
Copyright (C)
. All rights reserved.随时选购服务
需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金11.11大促流量暴涨,销量翻倍的方法
怎么用exescope更改软件窗口标题文字
怎么用exescope更改软件窗口标题文字
雇主预算:¥100.00
已收到 7 个服务商的文案稿件
, 最终中标并完成需求
有相似问题想解决?专业顾问来帮助您
01发布需求, 托管赏金02服务商交稿03雇主选稿04中标公示05验收并付款06评价
通过猪八戒网实名认证,保证身份真实可靠
完成手机认证,保证能随时联系到服务商
参与需求,开始赚钱
第1步:提交您的稿件
第2步:中标后交付作品
第3步:获得赏金
该需求下的优秀交稿
TA的交稿:
我能教你,并指导你完成&企鹅&851&46&181
交易成功的需求
其它工具软件相关需求【原创】一种破反调试的方法-修改窗口标题 - 看雪安全论坛
『软件调试逆向』 [综合性论坛]本版讨论的主题包括:调试逆向、系统底层、商业保护、虚拟机保护、.NET平台等安全相关的话题。
该主题: "【原创】一种破反调试的方法-修改窗口标题" 因在一定的时间里没有任何回复而自动关闭。如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。
本站声明:看雪论坛文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者信息及本声明!
注册日期: Dec 2012
现金: 42 Kx
获感谢文章数:1获会员感谢数:1
【原创】一种破反调试的方法-修改窗口标题
标 题: 【原创】一种破反调试的方法-修改窗口标题 作 者: blacksplit
时 间: ,19:39:20 链 接: /showthread.php?t=172371
反调试技术中,有一种方法,是查找当前开启的进程的主窗口的标题,如果发现反调试器的标志如OllyDBG等字样,&反调试的混淆或者异常等机制就会出现。使用这种反调试方法的程序我曾经遇到过,而且跟进去发现就是该使用方法进行反调试的。
昨天,看一个帖子,有人说可以通过改变窗口的标题来破解这种反调试机制,然后他说自己在下面贴了代码的图片,我看了半天也没有看到这种图片,更没有看到代码。不过我觉得这个想法很好,所以,就想去实现试试。
这破程序,调了我四个小时左右才搞定,至于是什么原因,我最后面再说吧。
首先说说思路:
Windows有个函数,叫做SetWindowText,可以改变窗口标题,不过MSDN上明确说了,该函数不能用来改变其他程序的窗口标题。原话如下:
However,&SetWindowText&cannot&change&the&text&of&a&control&in&another&application.
Setwindowtext无法改变其他程序的窗口标题,那该怎么办?如何让我们可控的代码成为目标进程的一部分?远程线程注入!OK,这样思路就很清楚了,通过远程线程注入,把我们可控的DLL注入到目标进程中,我们就可以使用SetWindowText来改变目标进程的窗口标题了。
&&具体实现:
1.&&远程线程注入DLL到目标进程
程序运行时,需要指定目标进程的程序名称,也就是在任务栏管理器的进程栏看到的程序名称,核心代码如下:
/*******************************获取进程的访问权限******************************/
//首先是启用访问进程的权限。与此相关的一些API函数有OpenProcessToken、LookupPrivilegevalue、AdjustTokenPrivileges。
&&&&&&&&if&(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
&&&&&&printf(&Call&OpenProcessToken&Failed,Error&Code&%08x\n&,GetLastError());
&&&&&&&&&&&&&&&&return&1;
&&&&&&&&if&(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Luid))
&&&&&&printf(&Call&LookupPrivilegeValue&Failed,Error&Code&%08x\n&,GetLastError());
&&&&&&&&&&&&&&&&return&1;
&&&&&&&&tp.PrivilegeCount&=&1;
&&&&&&&&tp.Privileges[0].Attributes&=&SE_PRIVILEGE_ENABLED;
&&&&&&&&tp.Privileges[0].Luid&=&L
&&&&&&&&if&(!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL))
&&&&&&printf(&Call&AdjustTokenPrivileges&Failed,Error&Code&%08x\n&,GetLastError());
&&&&&&&&&&&&&&&&return&1;
&&/*******************************获取进程的访问权限******************************/
&&&&&&&&pe.dwSize&=&sizeof(pe);
&&&&/*******************************枚举所有进程,以找到指定的进程*****************/
&&&&&&&&hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,&0);&&//获取所有的进程
&&&&&&&&bNext=Process32First(hSnap,&&pe);&
&&&&&&&&while(bNext)&
&&&&&&&&&&&&&&&&if(!stricmp(pe.szExeFile,prosess))&&&&&&&&&&&&&&//找到了指定的进程
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&//获取指定进程的句柄
&&&&&&&&&&&&printf(&Good,I&found&the&specified&process.\n&);
&&&&&&&&&&&&&&&&&&&&&&&&hkernel32=OpenProcess(PROCESS_CREATE_THREAD&|
&&&&&&&&&&&&&&&&&&&&&&PROCESS_QUERY_INFORMATION&|
&&&&&&&&&&&&&&&&&&&&&&PROCESS_VM_OPERATION|
&&&&&&&&&&&&&&&&&&&&&&PROCESS_VM_WRITE&|
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&PROCESS_VM_READ,1,pe.th32ProcessID);
&&&&&&&&&&&&if(hkernel32==NULL&||&hkernel32&==&INVALID_HANDLE_VALUE)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&printf(&Call&OpenProcess&Failed,Error&Code&%08x\n&,GetLastError());
&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&bNext=Process32Next(hSnap,&&pe);&
&&&&&&&&CloseHandle(hSnap);
&&&&/*******************************枚举所有进程,以找到指定的进程*****************/
&&&&/*******************************远程注入到指定进程*****************************/
&&&&p=NULL;
&&&&&&&&p=VirtualAllocEx(hkernel32,NULL,strlen(pkill),MEM_COMMIT,PAGE_READWRITE);&&//在目标进程中分配DLL文件名的空间
&&&&if(p==NULL)
&&&&&&printf(&Call&VirtualAllocEx&Failed,Error&Code&%08x\n&,GetLastError());
&&&&&&&&if(&WriteProcessMemory(hkernel32,p,(void&*)pkill,strlen(pkill),NULL)&==0)&&//在分配的空间中,写入DLL文件名
&&&&&&printf(&Call&WriteProcessMemory&Failed,Error&Code&%08x\n&,GetLastError());
&&&&&&&&pfn=GetProcAddress(GetModuleHandle(&kernel32.dll&),&LoadLibraryA&);&&&&&&//得到LoadLibraryA的地址
&&&&if(pfn==NULL)
&&&&&&printf(&Call&GetProcAddress&Failed,Error&Code&%08x\n&,GetLastError());
&&&&HANDLE&hThreadCreate=&CreateRemoteThread(hkernel32,NULL,0,(LPTHREAD_START_ROUTINE&)pfn,p,NULL,0);&&//根据进程句柄,创建远程线程。
&&&&&&&&if(&&hThreadCreate&==&NULL&||&hThreadCreate==INVALID_HANDLE_VALUE&&)&//远程线程开启后,就执行pfn(p),也就是加载dll
&&&&&&printf(&Call&CreateRemoteThread&Failed,Error&Code&%08x\n&,GetLastError());
&&&&&&return&-2;
&&&&printf(&OK,inject&success!\n&);
&&&&WaitForSingleObject(hThreadCreate,&INFINITE);
&&&&/*******************************远程注入到指定进程*****************************/
2.&&DLL中改变目标程序的窗口标题(下面以OllyDBG为例):
运行OD,窗口标题为OllyDbg:
&screen.width*0.6) {this.width=screen.width*0.6;this.alt='';this.onmouseover=this.style.cursor='pointer'; this.onclick=function(){window.open('/attachment.php?s=e8e77cac16bd&attachmentid=79336&d=')}}"
我们的DLL内容的关键内容如下:
BOOL&APIENTRY&DllMain(&HANDLE&hModule,&
&&&&&&&&&&&&&&&&&&&&&&&DWORD&&reason,
&&&&&&&&&&&&&&&&&&&&&&&LPVOID&lpReserved
&&&&&&&&&&&)
&&if&(reason&==&DLL_PROCESS_ATTACH)&&//DLL被加载时
&&&&MessageBoxA(NULL,&Loaded&,&DLL&LOAD&,MB_OK);
&&&&m&=&GetMainWindow();
&&&&SetWindowTextA(m,test);
&&else&if&(reason&==&DLL_PROCESS_DETACH)&&//DLL被卸载时
&&&&UnHookAPI();
&&return&TRUE;
其中,GetMainWindow()函数,是自定义的,功能是获取主窗口的句柄(SetWindowText需要使用该句柄作为参数,以修改其窗口标题)(为什么要自定义?因为AfxGetMainWindows()函数在DLL中不能使用):
HWND&GetMainWindow()&
&&DWORD&dwCurrentProcessId&=&GetCurrentProcessId();
&&if(!EnumWindows(EnumWindowsProc,&(LPARAM)&dwCurrentProcessId))&
&&&&return&(HWND)dwCurrentProcessId;&
&&return&NULL;&
其中的EnumWindows是枚举窗口的,也是自定义的:
BOOL&CALLBACK&EnumWindowsProc(HWND&hwnd,&LPARAM&lParam)&
&&DWORD&dwCurProcessId&=&*((DWORD*)lParam);&
&&DWORD&dwProcessId&=&0;&
&&GetWindowThreadProcessId(hwnd,&&dwProcessId);&
&&if(dwProcessId&==&dwCurProcessId&&&&GetParent(hwnd)&==&NULL)
&&&&*((HWND&*)lParam)&=&
&&&&return&FALSE;&
&&return&TRUE;&
我们把该DLL拷贝到system32目录下,或者和OllyDbg同目录,然后运行前面的注入程序(首先要先让OD运行起来):&
&install.exe&OllyDbg.exe
&&&&注入成功后,会弹出一个框来,表明注入成功:
screen.width*0.6) {this.width=screen.width*0.6;this.alt='';this.onmouseover=this.style.cursor='pointer'; this.onclick=function(){window.open('/attachment.php?s=e8e77cac16bd&attachmentid=79337&d=')}}"
&&点击确定,然后再去查看OD的标题,看是否已经被改了:
&screen.width*0.6) {this.width=screen.width*0.6;this.alt='';this.onmouseover=this.style.cursor='pointer'; this.onclick=function(){window.open('/attachment.php?s=e8e77cac16bd&attachmentid=79338&d=')}}"
&&可以看到,标题被成功修改。
&&对于部分程序,这样就足够了,但是对于OD,notepad等会在标题中显示正在处理什么内容的程序而言,还不够,因为用OD加载程序时,OD会再次改变标题栏的内容,这样,OllyDbg字样又再次出现,如下图所示:
&screen.width*0.6) {this.width=screen.width*0.6;this.alt='';this.onmouseover=this.style.cursor='pointer'; this.onclick=function(){window.open('/attachment.php?s=e8e77cac16bd&attachmentid=79339&d=')}}"
显然,这样的话,OD加载使用该反调试技术的程序时,就会露馅,从而达不到破除反调试的目的。
那么,该怎么办?怎么才能让OD的标题栏不要改回去呢?
HOOK技术!!OK,下面进行HOOK,以让OD的标题栏为我所控!
3.&&HOOK&SetWindowText
使用HOOK,拦截SetWindowText事件,从而达到操控OD标题栏的目的。但是,OD的其他控件也需要使用SetWindowText,我们应该放过这些,以便一些内容正常显示,因为我们的目的,只是改变OD标题栏的内容,而不是其他的窗口的内容或者标题。
那么我们如何判断调用SetWindowText是要该标题栏,还是要改其他窗口的内容或者标题?这个我们可以通过窗口句柄来判断,如果SetWindowText的句柄是主窗口,则说明是要该标题,否则不是。OK,思路有了,下面就实现。关键代码如下:
BOOL&WINAPI&SetWindowText2(
&&&&&&&&&&&&&&HWND&hWnd,
&&&&&&&&&&&&&&LPCTSTR&lpString
&&&&&&&&&&&&&&)
&&BOOL&ans&=&TRUE;
&&UnHookAPI();
&&if&(hWnd&!=&m)&//只要是m,就change
&&&&&&&&ans&=&SetWindowTextA(
&&&&&&&&&&&&&&&&&&hWnd,
&&&&&&&&&&&&&&&&&&lpString
&&&&&&&&&&&&&&&&&&);
&&&&ans&=&SetWindowTextA(m,test);
&&HookAPI();
SetWindowText2,就是新的函数,每当OD要调用SetWindowText的时候,就会调用SetWindowText2函数,函数里面发生的事情有:首先解除HOOK,因为接下来需要调用真正的SetWindowText以显示内容,然后进行判断,如果句柄不是主窗口句柄,我们就让它正常调用显示,如果是主窗口句柄,我们就把其内容改为test执行的内容,这个内容我们可以任意写入。调用成功后,再次HOOK,以便下次再次拦截。
使用HOOK技术后,当OD载入要调试的程序时,OK的标题也不会恢复为OllyDbg,而是我们控制的那样,如下图所示:
screen.width*0.6) {this.width=screen.width*0.6;this.alt='';this.onmouseover=this.style.cursor='pointer'; this.onclick=function(){window.open('/attachment.php?s=e8e77cac16bd&attachmentid=79340&d=')}}"
这样,我们就实现了对程序窗口标题的有效修改,并且始终会发挥作用。
上面说了,这个破程序搞了我4个小时左右的时间,原因有以下三点:
1.User32.dll默认是不自动加载的。因此,使用getprocAddress里面的函数之前&,要先加载该dll&&(我本以为user32.dll和kernel32.dll一样会自动加载,没想到居然不是,user32.dll需要在程序中手动加载,否则定位不到SetWindowsText函数的地址)
2.SetWindowTextA并不再调用SetWindowTextW(本以为所有的xxxA()都会最终还是要调用xxxxW()函数,所以起初HOOK时,HOOK的时SetWindowTextW,结果始终不对)
3.OllyDBG里面用的是SetWindowTextA,而不是SetWindowTextW(本以为作为一个发布出来的程序,都会使用xxxW函数,而OD显示标题居然是SetWindowTextA函数)*转载请注明来自看雪论坛@
感谢 blacksplit 此篇文章之用户:
注册日期: Apr 2004
现金: 3599 Kx
致谢数: 39
获感谢文章数:70获会员感谢数:485
, 20:44:07
鼓励一下,1个小时左右,论坛系统会自动将你转为正式会员。
注册日期: Dec 2012
现金: 42 Kx
获感谢文章数:1获会员感谢数:1
, 21:49:34
非常感谢~~
最初由 kanxue发布
鼓励一下,1个小时左右,论坛系统会自动将你转为正式会员。
注册日期: Dec 2008
现金: 199 Kx
致谢数: 23
获感谢文章数:1获会员感谢数:1
, 14:29:35
这个着实不错。记得从资源区下载过OD的源码,等下试试看看能不能从这上面改一下,直接去掉上面的OD字样
注册日期: Dec 2012
现金: 148 Kx
获感谢文章数:0获会员感谢数:0
, 14:52:59
俺感觉OD插件比较方便~
注册日期: May 2007
现金: 792 Kx
获感谢文章数:3获会员感谢数:3
, 17:55:58
只能说楼主没读懂msdn
你试试直接修改其他进程主窗口标题,不需要注入的
注册日期: Jan 2008
现金: 258 Kx
获感谢文章数:12获会员感谢数:47
, 18:39:41
现在加精的门槛很低啊~~
注册日期: Dec 2009
现金: 33 Kx
获感谢文章数:7获会员感谢数:13
, 19:08:36
要么MSDN错了,要么窗口不能叫做控件。。
注册日期: Jul 2009
现金: 270 Kx
获感谢文章数:3获会员感谢数:3
, 20:04:01
原创都是精~
注册日期: May 2013
现金: 40 Kx
获感谢文章数:0获会员感谢数:0
, 21:24:13
支持了&&正在学注入技术。
注册日期: Jun 2012
现金: 65 Kx
获感谢文章数:21获会员感谢数:58
, 21:33:08
最初由 kanxue发布
鼓励一下,1个小时左右,论坛系统会自动将你转为正式会员。
啊,这样就能拿精华啦?。。55555早知道我也来赚精华了。。5555
注册日期: Sep 2008
现金: 899 Kx
获感谢文章数:5获会员感谢数:6
, 21:46:56
大家应该知道&有个东西&叫模拟按键吧
首先获取xxx的句柄&接着xxxx
估计就可以了
注册日期: Apr 2004
现金: 3599 Kx
致谢数: 39
获感谢文章数:70获会员感谢数:485
, 21:47:36
最初由 lynnux发布
现在加精的门槛很低啊~~
最初由 IamHuskar发布
啊,这样就能拿精华啦?。。55555早知道我也来赚精华了。。5555
原先发在『临时会员版』&版,为了鼓励新人,门槛比较低。
注册日期: Apr 2007
现金: 276 Kx
获感谢文章数:0获会员感谢数:0
, 05:43:20
msdn不会看,改变标题居然需要注入,误导。
注册日期: Aug 2006
现金: 92 Kx
获感谢文章数:2获会员感谢数:2
, 09:12:20
都用OD各种插件,&&&很少能见到这么朴实的孩子了
该主题: "【原创】一种破反调试的方法-修改窗口标题" 因在一定的时间里没有任何回复而自动关闭。如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。
您不可以发表主题
您不可以回复帖子
您不可以上传附件
您不可以编辑自己的帖子
论坛论坛启用
用户控制面板
会员在线状态
CrackMe攻击篇,分析文章提交区
『看雪众测/众包』
『求助问答』
『经典问答』
『资料导航』
『软件调试逆向』
『密码学』
『编程技术』
『C32Asm』
『MDebug』
『安全工具开发』
『加壳与脱壳』
『CrackMe&ReverseMe』
『资源下载』
『Android 安全』
『Android 开发』
『iOS安全』
『WEB安全』
『漏洞分析』
『外文翻译』
『招聘专区』
『职业生涯』
『15PB培训』
『麦洛克菲培训』
『茶余饭后』
『安全资讯』
『论坛活动』
6)PEDIY Crackme竞赛2009
7)看雪十周年专版
8)腾讯公司2010软件安全竞赛
9)2011 Exploit Me竞赛
『图书项目版』
《加密与解密(第三版)》
《C++反汇编与逆向分析技术揭秘》
《Android软件安全与逆向分析》
『论坛版务』
所有时间均为北京时间, 现在的时间是 .
&&& 看雪学院()
| 提供带宽资源
|&微信公众帐号:

我要回帖

更多关于 修改exe文件 标题栏 的文章

 

随机推荐