Dephi逆向工具Dede导出函数名MAP导入到IDA中的实现方法
作者:向往生 发布时间:2023-04-09 06:31:40
标签:MAP,导入,IDA,Dephi
1.背景
在逆向Dephi程序时,会出现Dede软件可以看到函数的函数名,但是IDA逆向的时候看不到,为了解决这个问题,可以通过以下的方法来实现:
2.基础知识
IDA因为没有PDB文件,无法还原函数的原始名称,通过逆向工程师的汇编代码识别,可以给函数手工重新命名,也可以使用IDC脚本语言来给特定的地址命名:
MakeName(0x006E624C, "TSingleForm.ComboBox1Change");
基于这个原理,我们查找一下DEde如何生成这样的“地址:函数”的对应表。
3.实操
1.从Dede中导出地址函数表
找到文件夹里的events.txt,这就是包含函数地址和函数名的文件。
2.运行python脚本把events.txt转化为IDC脚本;
以下的脚本打开脚本相同目录下的events.txt,用.split()方法把地址和函数名装入list[0]和list[1]中,无函数名的过滤掉。
import os
try:
import chardet
except:
os.system('pip install chardet')
import chardet
def check_charset(file_path):
import chardet
with open(file_path, "rb") as f:
data = f.read(4)
charset = chardet.detect(data)['encoding']
return charset
def map2idc(in_file, out_file):
with open(out_file, 'w') as fout:
fout.write('#include <idc.idc>\n')
fout.write('static main()\n{\n')
with open(in_file,encoding=check_charset(in_file)) as fin:
for line in fin:
list = line.split()
if len(list) == 2 and len(str(list[1])) == 8 and str(list[1]).isalnum():
if(list[1][-4:]!=list[0][-4:]): #函数名==地址的,不要
fout.write('\tMakeName(0x%s, "%s");\n' % (list[1], list[0]))
fout.write('}\n')
def main():
return map2idc("./events.txt","./ida.idc")
把上面的python复制到.py文件里,python脚本和events.txt放在同一个目录下,运行python脚本,就会生成ida.idc文件。一个简单的idc脚本如下:
#include <idc.idc>
static main()
{
MakeName(0x0040178C, "TObject.System.GetSpace(Integer):TBlock;");
}
3.运行idc脚本,重命名函数
打开Ida,File-->Script file,选择刚才生成的ida.idc文件,即可批量重命名函数了。
这样,你的dehpi就有函数名了。
4.总结
通过这个脚本,我们就可以把专业dephi程序分析的结果,转移到IDA专业逆向代码分析的平台,实现联动。
参考文献:把MAP文件导入IDA Pro的小程序
来源:https://blog.csdn.net/qq_20031585/article/details/126122558


猜你喜欢
- 一、分屏展示当你想同时看到多个文件的时候:右击标签页;选择 move right 或者 split vertical;效果:二、远程 Pyt
- 代码如下:< % Set fso=Server.CreateObject("Scripting
- 大家都知道一些论坛的标题有高亮显示功能,在这里我不讨论也不研究论坛普遍的实现方法,下面是我的实现方法:实现思路:把要高亮显示的标题加上特定标
- 这个javascript农历日历,万年历代码网上看到的,很不错,功能齐全,值得收藏!功能介绍:动态显示当前世界各国各时区时间,显示当前农历,
- 如下所示:import timedef date_compare(item1, item2): t1 = time.mktime(time.
- 介绍asyncore库是python的一个标准库,提供了以异步的方式写入套接字服务的客户端和服务器的基础结构。操作网络的时候可以直接使用so
- 写在前面:在上一篇文章中介绍了栈这个数据结构,这篇文章介绍一下队列。什么是队列?队列是一种先进先出的数据结构,队列中允许两种基础操作,也就是
- 为 Web页指定 DOCTYPE 会影响浏览器呈现页的方式。Internet Explorer、Mozilla Firefox 和 Oper
- 注:转载就注入出自'孤孤浪子博客'原创 http://itpro.blog.163.com 第一步 http://itpro
- 为index.php文件设置只读属性后,木马就没权限给你文件末尾追加广告了。下面我们看具体的代码,设置index.php只读:<?ph
- 本文介绍,在 VSCode 使用 IPython Kernel的设置方法,详细介绍如下所示:要达到的效果:只需按下 Ctrl+;,选中的几行
- 本文实例讲述了Python基于Tkinter实现的记事本。分享给大家供大家参考。具体如下:from Tkinter import *root
- 一、Pandas如何将表格的前几行生成html实战场景:Pandas如何将表格的前几行生成html1.1主要知识点文件读写基础语法Panda
- 之前一直用python自带的IDLE写python程序,后来发现有一些限制啥的,于是下载了pycharm作为IDE去处理python新建项目
- 本文实例讲述了Symfony2框架创建项目与模板设置的方法。分享给大家供大家参考,具体如下:环境准备与概览习惯于在windows使用netb
- 在项目中时间一律显示为2014-10-20 10:22显得很呆板。在微博、QQ空间等网站通常会显示为几秒前,几分钟前,几小时前等容易阅读的时
- 本文实例讲述了python装饰器常见使用方法。分享给大家供大家参考,具体如下:python 的装饰器,可以用来实现,类似spring AOP
- 大家都见过某网页中的恶意广告,你关闭了又出来了!为何,JS来告诉你HTML<body> <h3 class=&
- python中,我们可以对列表、字符串、元祖中的元素进行排序,那对于字典中的元素可以排序吗?其实对于字典本身我们无法进行排序,但是我们可以对
- 本文实例讲述了mysql实现合并同一ID对应多条数据的方法。分享给大家供大家参考,具体如下:如 :CREATE TABLE `c_class