IDA版本:7.2
X64Dbg版本:x64dbg_2021_03_12
X64Dbg加载Map文件插件:SwissArmyKnife 9-26-2020
假期想重新分区,给C盘扩展一下,结果系统进不去了,重置后进系统却没有网络,ping不出去,尝试各种方法后无奈准备调试ping.exe看能不能找到问题,这是前提条件
因为工作电脑ping不出去,没网,就吧ping.exe拷贝到另一台电脑上用IDA7.2加载系统符号分析一下。然后在工作电脑上用X64dbg调试。加载系统符号后清晰了很多,所有函数都被识别了出来
就想导出MAP文件到X64Dbg,但导入后出现了问题:
IDA中main函数地址为7FF663651B5C
但导入X64dbg后,main函数的地址变成了7FFEF94D0B5C,指到了ntdll的text,确定不是IDA设置问题,因为我已经把IDA基址设置为和X64dbg一样,尝试了两次后问题还在,去官网加百度找一圈也没看到类似的情况,只好自己试着看看吧。
首先想的是为什么函数符号会跑到ntdll里。应该都在exe文件所在内存空间才对。
想了很久的我忽然注意到,在X64dbg载入进程的伊始,地址就是在ntdll里,于是先按一下F9让程序走到exe的空间,再导入map文件。
可以,符号成功来到EXE所在内存了,但地址还不对。成功了一小步
该地址与实际地址小了0x1000,像是MAP文件的问题,没办法,看看MAP文件吧
MAP不复杂,虽然看不太懂,但能猜个大概,后边是函数名,冒号后应该是偏移,暂时不知道冒号前的意义,感觉像是区段,但又不存在000001的区段,想着会不会是IDA和X64的起始下标不一样导致的,把这里改成2试试。于是把这里的数字都加了一,居然成功了。