首页
社区
课程
招聘
[求助]WinDgb 如何命名一个 地址或函数
发表于: 2011-8-19 17:39 5018

[求助]WinDgb 如何命名一个 地址或函数

2011-8-19 17:39
5018
使用命令,脚本,扩展都可以 有思路也行,自己写个扩展

比如调试中 有个命令 call 0x41000 如何给它命名?把地址换成符号

比如   
u 0x41000

image0000005 + 0x1000

mov xx,xx
mov ebp,esp  
...

如何给 image0000005 + 0x1000去个名字 之后反汇编可以直接 成  

u 0x41000

MyNameProc + 0x0

mov xx,xx
mov ebp,esp  
...

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
使用as定义别名。

0:001> aS /x myAlias 5 + 1; .block{.echo myAlias}
0x6

具体的看help吧。
2011-8-19 19:05
0
雪    币: 27
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
as 只可以正向,不可以反向  简单说

as MyProc 0x4000;

可以 u MyProc  可以识别成 0X4000

但是 u 0x4000 就不会识别成MyProc

as 相当于是个宏  不满足要求啊
2011-8-19 19:09
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
别名本就如此。

你要新添加符号,这是不大可能的,因为所有的符号信息要么在PE中,要么在符号文件中,调试器不会修改这2个文件的。

单纯的反向功能是ln,从地址反向到符号的。
2011-8-19 22:09
0
雪    币: 27
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
就算原本 WINDBG没有这个功能,作为一个程序员实现这个功能也不是问题把,如果不考虑效率的话我有数种方法实现这个功能,我不想花太多时间在算法上

IDA 和 OLLYDBG都有这个功能
2011-8-19 23:48
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
从我的使用感觉来说,别名差不多了。就像编程语言中的变量名一样,有了名字,一般都不会直接使用地址了。
windbg本身可以在地址和符号之间相互转换,如下:
0:000> ln main
d:\project\mine\vs.net\testc\testc\testc.c(51)
(004133c0)   testC!main   |  (00413410)   testC!TestInt
Exact matches:
    testC!main (int, char **)
0:000> u 4133c9
testC!main+0x9 [d:\project\mine\vs.net\testc\testc\testc.c @ 51]:
004133c9 53              push    ebx

我没写过扩展,如果windbg的扩展能够修改符号表,在符号表中添加自己的项的话,就可以实现你所需要的。比如说定义一个Symbol,testC!main2 4133c9,这样 u 4133c9的话,就直接显示为testC!main2了。:)
2011-8-20 11:30
0
雪    币: 27
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
答非所问,竟然说自定义符号没用,那是不是符号文件也没用了

已经解决了
2011-8-21 14:31
0
游客
登录 | 注册 方可回帖
返回
//