是否有标准字符编码是 ASCII 减去控制字符?

逆向工程 编码
2021-07-06 13:20:36

我在分析的一些嵌入式 SH2A 代码中遇到了一些不寻常的字符串......

11 53 54 00 53 55 4E 44 41 59 00 4F 46 00 2E 4F 56 45 4D 42 45 52 . S T . S U N D A Y . O F . . O V E M B E R

如果从每个字节中减去 0x20,我意识到这只是“11 月的第一个星期日”,有效地从 ASCII 中删除了控制字符。但是他们仍然使用每个字符完整的 8 位(并不是说减去控制字符就足以减少一点),所以我想知道他们为什么要这样做,以及它是自产的还是只是晦涩的。

1个回答

tolower() 的实现,toupper() 通常倾向于使用 0x20 的加法或减法,也许它是这些函数的某种本土酿造

这是来自radare2的msvcrt toLower()伪c代码

[0x78b0ccd4]> pdc
function sym.MSVCR100.dll__tolower () {
    //  1 basic blocks

    loc_0x78b0ccd4:

       edi = edi
       push ebp
       ebp = esp
       eax = dword [arg_8h]     //[0x8:4]=-1 ; 8
       eax += 0x20
                                //ebp ; ebp
       return
(break)

}
[0x78b0ccd4]>