 |
用插件(plugin)的方式改变IDAPro的边界线 |
|
| 用插件(plugin)的方式改变IDAPro的边界线 |
|
| 作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:58:35
|
rdDisplay::Free+8p 00401140 ; CHistory::Free+18p ... 00401140 00401140 arg_0= dword ptr 4 00401140 00401140 mov eax, [esp+arg_0] 00401144 push eax 00401145 call MemFree 0040114A add esp, 4 0040114D retn 0040114D CStatus::Free endp 0040114D 0040114D ; ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
以下是对这个插件的简单说明,详细内容请参阅源代码
ida边界生成函数分别为 bool MakeBorder(); bool MakeSolidBorder(); 它们在ida.wll这个压缩动态连接库中。其中后者为函数的分界线。我们就patch这两个函数。
typedef bool (*BorderFunc)(void);
static bool PatchBorderFuncs(void) { BorderFunc func; unsigned char* ptr, *ptr2; int i, j;
// 获得要patch函数的地址 func = MakeBorder; // 这是thunk地址 ptr = (unsigned char*)**(BorderFunc**)((char*)func + 2); // 这才是函数在ida.wll
中的真实地址 ... }
如果仅仅想边界线显示为=========或-------------,那就太简单了,仅需将 push 0c4h 改成 push 2dh push 0dbh 改成 push 3dh
如果想要显示双字节边界,除了patch以上二个函数外,还要修改sub_100732C4(),让它支持中文字
符边界,这样美观的多,你说呢?
用以上的方法虽解决了一个无关紧要问题,却让我们有了一个修改ida的一个方法! 以下是源代码:
/* * This Border line patch * By Xiao Han-Qing (bpx) * April 5, 2003 */
#include <ida.hpp> #include <idp.hpp> #include <bytes.hpp> #include <loader.hpp> #include <kernwin.hpp>
/* MakeBorder() { 10011E4C 55 push ebp 10011E4D 8B EC mov ebp,esp 10011E4F 83 C4 9C 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: IDA4.30文本窗中难看的分界线的patch 下一篇文章: IDAPro4.x边界线的最后解决 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |