某Delphi软件逆向记录

某Delphi软件逆向记录

一、背景

最近逆向分析某个工具类软件,拖进die里分析结果如下:
在这里插入图片描述
居然是加了上古的ASPack壳,并且是Delphi编写的,估计维护这个软件的公司10年以内没有重构过了。从网上随便找了个脚本把ASPack的壳脱了,但是Delphi编译后乍看一片混乱,俗话说工欲善其事必先利其器,需要找一套合适的工具先还原一下符号信息。

二、还原符号信息

从github上找到了一个神器IDR(链接),把脱壳后的二进制文件直接拖到里面,软件会自动分析出是Delphi 7编写的。然后把(可能)含有Delphi 7的符号信息kb7.7z解压后放在IDR运行的目录下,软件便可以自动分析并还原符号信息。
还原完毕后,可以点击 Tools -> IDC Generator 导出idc脚本给IDA使用。然而,在ida中运行导出的idc脚本后,会发现很多函数虽然起始地址和结束地址是对的,但是内部的汇编代码全被误识别成了二进制的数据(如db dd dw)。需要再写一个python脚本,遍历还原出的函数,让IDA对其进行重新分析

from idc import *
first_addr = 0x401000
current_func = get_next_fchunk(first_addr)
while (current_func != BADADDR):
    end = find_func_end(current_func)
    plan_and_wait(current_func,end)
    print(f'analyzing from {hex(current_func)} to {hex(end)}')
    current_func = get_next_fchunk(current_func)

三、愉快的逆向

此处自行脑补
有一个比较坑的地方是Delphi中的字符串通常不是以\0结尾,而直接在字符串首部用1位的信息记录整个字符串的长度

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Delphi是一种以视觉化编程为基础的集成开发环境(IDE),用于创建Windows平台下的应用程序。在Delphi中,软件界面模板是一种预定义的用户界面布局和设计模式,可以作为项目的起始点或基础,以便在不同的应用程序中重用。 Delphi软件界面模板可以包含各种元素,如窗口、对话框、工具栏、菜单等。这些元素已经在设计上进行了优化和整合,以提高应用程序的可用性和用户体验。使用模板可以显著减少开发时间和工作量,同时确保应用程序的一致性和整体风格。 Delphi提供了一些内置的软件界面模板,如标准窗口、消息框、设置对话框等。此外,开发人员还可以创建自己的模板,以适应特定的应用程序需求。创建自定义模板可以通过在Delphi的Form Designer中进行界面设计和布局,并保存为可重用的模板文件。 使用Delphi软件界面模板,开发人员可以快速创建具有一致性和专业外观的应用程序界面。通过提供可重用的模板,开发人员可以在不同的项目中轻松应用相似的布局和样式,从而提高开发效率。此外,模板还可以减少人为错误,确保界面的正确性和兼容性。 总而言之,Delphi软件界面模板是一种有助于快速创建和设计应用程序界面的工具。通过使用预定义的模板或创建自定义模板,开发人员可以减少开发时间,提高开发效率,并确保应用程序具有一致性和良好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值