添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
0FFFFFFFFh      // Delphi 字符串标志
string_length   // 字符串长度(不包括尾部的字节0)
C-style_string  // 以字节0为结尾的C语言字符串
例如,在Delphi中有一个字符串'Delphi String', 编译后在可执行文件中的结果为:
dd 0FFFFFFFFh
dd 0Dh
db 'Delphi String',0
当IDA能够自动识别时,其形式如下:
CODE:00455948 dd 0FFFFFFFFh           ; _top
CODE:00455948 dd 13                   ; Len
CODE:00455948 db 'Delphi String',0    ; Text
它实际上是一个结构体:
_strings        struc ; (sizeof=0x8, variable size)
_top            dd ?                    ; base 16
Len             dd ?                    ; base 10
Text            db 0 dup(?)             ; string(C)
_strings        ends
但有相当多的Delphi字符串并没有识别出来(特别是中文字符串),而且即便识别为如上形式,在程序引用时也不够直观,其一般形式为
mov     edx, offset stru_455948.Text
还不如将其改为如下形式:
CODE:00455948                 dd 0FFFFFFFFh, 0Dh
CODE:00455950 aPascalString   db 'Pascal String',0
这时在程序中的引用形式为
mov     edx, offset aPascalString ; "Pascal String"
这样字符串的引用就更加直观,便于阅读。
AutoDelphiString.plw能对整个程序的所有Delphi字符串进行成片地识别。可以从光标当前地址开始到文件结尾,也可以从文件开始到文件结尾。

使用:
将AutoDelphiString.plw复制到IDA5.2的安装文件夹plugins下,用IDA PRO 5.2打开一个用Delphi编译的32-bit可执行文件,然后按快捷键
“Ctrl-Alt-P”运行AutoDelphiString.plw,这时会出现对话框选择从哪里开始:0表示从程序的起始地址开始识别整个文件;1表示从当前光标所在地址开始识别到文结束。默认选项为0。单击OK按钮后将提示是否要将识别信息存盘,单击Yes即可存盘。等识别结束后,如果没有错误,即可在已经打开文件的当前文件夹下找到一个.log信息记录文件。根据该文件提供的地址在IDA中找到相应位置(用G命令,然后输入该地址),这时即可看到识别结果了。
以自己用Delphi开发的小程序cdsize.exe为例给出操作过程,见附件中的“AutoDelphiString操作说明.pdf”。
只能在IDA 5.2下运行,识别没有加壳的(或脱过壳的)Delphi程序。
某个加壳程序脱壳后的一小段识别结果对比:
识别前的情况
.text:00589F1C                 dd 0FFFFFFFFh, 4
.text:00589F24 dword_589F24    dd 0E5CCDABAh, 0
.text:00589F2C                 dd 0FFFFFFFFh, 6
.text:00589F34 aTitle1         db 'Title1',0
.text:00589F3B                 align 4
.text:00589F3C                 dd 0FFFFFFFFh, 6
.text:00589F44 aTitle2         db 'Title2',0
.text:00589F4B                 align 4
.text:00589F4C byte_589F4C     db 0
.text:00589F4D                 align 10h
.text:00589F50                 dd 0FFFFFFFFh, 0Bh
.text:00589F58 dword_589F58    dd 0E5CCACBFh, 3242475Fh, 323133h, 0FFFFFFFFh, 6
.text:00589F6C aTitle3         db 'Title3',0
.text:00589F73                 align 4
.text:00589F74                 dd 0FFFFFFFFh, 5
.text:00589F7C aText1          db 'Text1',0
.text:00589F82                 align 4
.text:00589F84                 dd 0FFFFFFFFh, 5
.text:00589F8C aText2          db 'Text2',0
识别后的结果
.text:00589F1C                 dd 0FFFFFFFFh, 4
.text:00589F24 asc_589F24      db '黑体',0
.text:00589F29                 align 4
.text:00589F2C                 dd 0FFFFFFFFh, 6
.text:00589F34 aTitle1         db 'Title1',0
.text:00589F3B                 align 4
.text:00589F3C                 dd 0FFFFFFFFh, 6
.text:00589F44 aTitle2         db 'Title2',0
.text:00589F4B                 align 4
.text:00589F4C byte_589F4C     db 0
.text:00589F4D                 align 10h
.text:00589F50                 dd 0FFFFFFFFh, 0Bh
.text:00589F58 aMX_gb2312      db '楷体_GB2312',0
.text:00589F64                 dd 0FFFFFFFFh, 6
.text:00589F6C aTitle3         db 'Title3',0
.text:00589F73                 align 4
.text:00589F74                 dd 0FFFFFFFFh, 5
.text:00589F7C aText1          db 'Text1',0
.text:00589F82                 align 4
.text:00589F84                 dd 0FFFFFFFFh, 5
.text:00589F8C aText2          db 'Text2',0
本插件的识别率非常高,但也难免会有bug,请多提宝贵意见。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法