fjqisba 发表于 2021-4-10 14:33

IDA7.5支持中文函数命名的办法

本帖最后由 fjqisba 于 2021-4-10 14:36 编辑

### 解除函数名称的限制

默认配置情况下我们是不能将函数名称修改为中文的,会提示bad character,意思就是包含非法字符,那么怎样让中文成为合法的字符呢?

通过在网上查找资料,这个合法字符的定义在ida.cfg文件中,我们定位到文件,搜索Block_CJK_Unified_Ideographs,如下图所示:

```
// the following characters are allowed in user-defined names:

NameChars =
      "$?@"         // asm specific character
      "_0123456789"
      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
      "abcdefghijklmnopqrstuvwxyz",
      // This would enable common Chinese characters in identifiers:
      // Block_CJK_Unified_Ideographs,
      CURRENT_CULTURE;
```

我们去掉`Block_CJK_Unified_Ideographs`这一行前面的注释,就可以给函数名字起中文了。

### 解除IDA反汇编代码限制

虽然通过上述操作函数可以起名为中文,但是实际上使用F5功能的时候,得到的伪代码,中文函数名称却会变成下划线,如下图所示:




通过对IDA进行逆向得知,原来hexray在生成伪代码的时候会调用一个`calc_c_cpp_name`函数,该函数会试图针对C/C++的函数名称进行优化,结果却误伤中文字符,我们将此处代码给NOP掉,就可以了。


### 总结
大家可以自行对模块进行修改,或者使用已制作好的DLL,替换后效果如下:


chinasmu 发表于 2021-4-11 13:09



替换文件后显示这个怎么搞啊{:1_896:}

rogxo 发表于 2023-4-21 15:05

kenant 发表于 2023-3-28 17:28
大佬你好,我用的你评论区提供的IDA,然后用你的DLL替换之后,ida.cfg也把对应行注释掉了,测试可以修改中 ...

我去逆向分析了下,我是有个特征没搜到导致的初始化失败
bool EDecompiler::initEArchitectureType()
{
        this->arch = E_UNKNOWN;

        //探测易语言程序类型
        ea_t staticMagicHead = SectionManager::SeachBin("50 64 89 25 00 00 00 00 81 EC AC 01 00 00 53 56 57");    //这个特征码没搜到失败了
        if (staticMagicHead != BADADDR) {
                unsigned int eHeadAddr = get_dword(staticMagicHead + 0x26);
                if (Parse_EStatic(eHeadAddr)) {
                        this->arch = E_STATIC;
                        return true;
                }
        }

        //To do...即便是静态编译特征被VM了,应该还有一些解决的思路,暂时先不管。
        return false;
}

romobin 发表于 2021-4-10 15:11

感谢分享, 找了不少地方没找到解决方案

fkcp 发表于 2021-4-10 16:40

多谢分享!

winooxx 发表于 2021-4-10 17:00

感谢楼主的分享!

.KK 发表于 2021-4-10 18:01


感谢分享

freecat 发表于 2021-4-10 18:49

谢谢分享 刚好解决了问题

nmy124 发表于 2021-4-10 21:50

谢谢老师分析,好工具,收藏了

冥界3大法王 发表于 2021-4-10 22:00

n键也能?@fjqisba

冥界3大法王 发表于 2021-4-11 09:16

成功了,再次感谢。{:301_1006:}

GeaC 发表于 2021-4-11 09:58

很好的经验,学习了
页: [1] 2 3 4 5 6
查看完整版本: IDA7.5支持中文函数命名的办法