• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi下生成Map文件方法,免杀或调试用的

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

以前看了 通过崩溃地址找错误行数之VC版 那时候还没用DELPHI
昨晚刚好又看到了 所以就试了一下DELPHI的,与大家共享 ^_^

什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。

DELPHI下生成MAP文件的方法:偶只知道下面两种,如果谁知道其他的方法 敬请告知 多谢
生成详细的MAP信息的方法
1. project -> options -> Linker -> Map file 选择detailed.
2. D:\Fred\Code\DELPHI\MyPas\ErrLineByAddr2>dcc32 -GD project1.dpr

我们的代码为:
unit Unit1;

//{$D+,L+}

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
I, J: Integer;
p: PChar;
begin
I := 10;
J := 0;
//I := I div J; // 32
//ShowMessage(IntToStr(I));
p := nil;
p^ := 'A'; // 38
end;

end.
// 想必大家看到了 会有返回0地址错误....我们这里就是要让它崩溃,让我让你崩溃 ^_^
然后执行 点击 然后出错 我的机器上 崩溃地址为0044d946

如果要查找代码行号,需要使用下面的公式做一些十六进制的减法运算:
崩溃行偏移 = 崩溃地址(Crash Address) - 基地址(ImageBase Address) - 0x1000
减去后得到 0004c946 然后查找 0004c946
0044d946 - 00400000 = 0004d946 - 00001000 = 0004c946 <= 后面列出的
0004C946 就是它了 我们用ultraedit32之类的工具打开 .map文件 搜索 0004C94,找到了,然后就找
<= 0004c946的那个地址 然后看到了
Line numbers for Unit1(Unit1.pas) segment .text

    37 0001:0004C944    38 0001:0004C946    39 0001:0004C949    41 0001:0004C97C
    41 0001:0004C983

o yeah..<星际里面注射兴奋剂的声音 ^_^>.. 38 0001:0004C946    就是它了。。。unit1.pas的第38行!!去代码里看一下 果然就是38行 ^_^.....

共享ing...如果有不妥之处 敬请之处 多谢....
-------------------------------------------------------------------------

简单的方法
机器里要装delphi
然后新建一个快速编译.bat
内容 dcc32 -GD xx.dpr
把xx.dpr改成你自己的工程文件。
运行快速编译.bat  
就能编译出程序,和map文件。

另外问下各位高手。
我用mycll定位出来的地址。用oc转成了内存地址,再 -基地址(ImageBase Address) - 0x1000
得出来的地址Map文件里却没有。
不知道怎么回事。是不是我搞错了。
我现在就想。用mycll定位地址,然后在map文件里找到对应的代码


(转载)http://l049604211.blog.163.com/blog/static/1042430432009102091022547/


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[转]matlab获取时间日期发布时间:2022-07-18
下一篇:
MATLAB生成随机数发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap