首页
社区
课程
招聘
[IDA使用技巧]#013: 字符串文本和自定义编码
发表于: 2024-4-15 13:44 3958

[IDA使用技巧]#013: 字符串文本和自定义编码

2024-4-15 13:44
3958

翻译:梦幻的彼岸

原文地址:https://hex-rays.com/blog/igor-tip-of-the-week-13-string-literals-and-custom-encodings/

大多数 IDA 用户可能会分析使用英语或其他拉丁字母的软件。因此,用于字符串文本的默认值(Windows 上的操作系统系统编码和 Linux 或 macOS 上的 UTF-8)通常已经足够好了。不过,偶尔也会遇到使用其他语言的程序。

Unicode 字符串

如果程序使用宽字符串,通常只需在创建字符串文本时使用相应的 "Unicode C-style "选项即可:


一般来说,Windows 程序倾向于使用 16 位宽字符串(wchar_t为 16 位),而 Linux 和 Mac 则使用 32 位字符串(wchar_t为 32 位)。不过,也有例外情况,您可以根据所分析的特定二进制文件使用其中一种。

提示:您可以使用加速器快速创建特定字符串类型,例如 Alt + A,U 表示 Unicode 16 位。

自定义编码

在某些情况下,被分析的二进制文件使用的编码可能与 IDA 选定的编码不同,甚至在同一文件中存在多个互不兼容的编码。在这种情况下,你可以为单个字符串文本分别设置编码,或者为所有新字符串全局设置编码。

添加新编码

在默认列表中添加自定义编码(通常为 UTF-8、UTF-16LE 和 UTF-32LE):

  1. Options > String literals… (Alt + A);
  2. 单击“Currently:”旁边的按钮;
  3. 在上下文菜单中, “Insert…” (Ins);
  4. 指定编码名称

编码名称可以使用

  • Windows 代码页(如 866、CP932、windows-1251)
  • 知名字符集名称(如 Shift-JIS、UTF-8、Big5)


在 Linux 或 macOS 上,运行 iconv -l查看可用编码。

注意:并非所有系统都支持某些编码,因此你的 IDB 可能会因系统而异。

使用特定字符串文本的编码
  1. Invoke Options > String literals… (Alt + A);
  2. 单击“Currently:”旁边的按钮;
  3. 选择要使用的编码;
  4. 如果创建一个新文本,请单击特定字符串按钮(如C-Style);如果修改现有文本,请单击 "OK"。


为所有新字符串文本设置默认编码
  1. Invoke Options > String literals… (Alt + A);
  2. 单击 “Manage defaults”;
  3. 单击“Default 8-bit”旁边的按钮,选择要使用的编码

从现在起,快捷键 A 将使用新的默认编码创建字符串文本,但您仍可以根据具体情况覆盖它,如上所述。




[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 7345
活跃值: (4547)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢
2024-5-6 05:44
0
雪    币: 446
活跃值: (192)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjh
3
学习学习,呵呵。
2024-5-7 09:21
0
雪    币: 3070
活跃值: (30876)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2024-5-7 09:49
1
雪    币: 5453
活跃值: (1482)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习,感谢
2024-5-14 09:43
0
游客
登录 | 注册 方可回帖
返回
//