作为一个逆向工程师,经常会使用到IDA。可IDA默认不支持中文字符串,碰到有中文字符串的程序时,IDA显示的结果一点都不友好。
摸索了一下,如果要让IDA显示中文字符串,需要做一些修改。
1. 修改IDA配置文件 cfg\ida.cfg. 搜索“cp866”, 然后(CP866 version)的AsciiStringChars 注释掉, 将(full version)AsciiStringChars反注释掉。修改后是这个样子的:
// (cp866 version)
//AsciiStringChars =
// "\r\n\a\v\b\t\x1B"
// " !\"#$%&'()*+,-./0123456789:;<=>?"
// "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
// "`abcdefghijklmnopqrstuvwxyz{|}~"
// "€
//(full version)
AsciiStringChars =
"\r\n\a\v\b\t\x1B"
" !\"#$%&'()*+,-./0123456789:;<=>?"
"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
"`abcdefghijklmnopqrstuvwxyz{|}~"
"€
2. 定位到中文字符串的地方,首先你得辨别一下这个中文字符串的编码,可能是GBK,UNICODE,UTF-8等。按下ATL+A 打开字符串对话框。
1)左边区域是你当前操作的字符串单个设置。
2)右边区域是字符串全局设置。全局设置是你按下shift + F12 时显示的字符串的类型。设置类型根据实际情况选择,一般程序中可能同时存在多种编码。
3)下方区域是最关键的地方,编码类型选择。左边是本次设置,右边是全局设置。
全局设置:
8bit 的可以设置成GBK 或者UTF-8,根据实际情况选择。16bit的一般是UNICODE, 直接设置成UTF-16LE. 如果你的选项里没有GBK,则先点开左边的Change encoding, 按下insert 键, 输入gbk 添加GBK编码就可以了。
单个字符串的编码设置
同样也是根据实际情况选择。
看看识别的效果: