无法识别的字节序列

逆向工程 C++
2021-06-23 11:16:06

我有这段代码:

.text:00537FDE                 push    offset a3Rrrrrrrrrrrrr ; "3L+ÐÐÐÐÐÐÐÐÐÐÐÐÐ+ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐøû9\n"
.text:00537FE3                 call    sub_5606A0

在哪里offset a3Rrrrrrrrrrrrr

.text:005379B0 a3Rrrrrrrrrrrrr db '3L+ÐÐÐÐÐÐÐÐÐÐÐÐÐ+ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐøû9',0Ah,0

来自此字符串的十六进制视图的字节:

.text:005379B0  33 C0 C3 90 90 90 90 90  90 90 90 90 90 90 90 90  3L+ÐÐÐÐÐÐÐÐÐÐÐÐÐ
.text:005379C0  C3 90 90 90 90 90 90 90  90 90 90 90 90 90 90 90  +ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ
.text:005379D0  E8 EB 39 0A 00 68 C0 79  53 00 68 80 56 6A 00 6A  øû9.hLyS.hÀVj.j

和 sub_5606A0:

.text:005606A0 sub_5606A0      proc near               ; CODE XREF: WinMain(x,x,x,x)+223p
.text:005606A0
.text:005606A0 arg_0           = dword ptr  4
.text:005606A0
.text:005606A0                 mov     eax, [esp+arg_0]
.text:005606A4                 mov     dword_8478CC, eax
.text:005606A9                 retn
.text:005606A9 sub_5606A0      endp

这个编码的字符串是什么意思?

.text:005379B0 a3Rrrrrrrrrrrrr db '3L+ÐÐÐÐÐÐÐÐÐÐÐÐÐ+ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐøû9',0Ah,0

提前致谢!

1个回答

字节序列不代表字符串

请注意前 3 个字节0x33,0xc0,0xc3

这些是xor eax,eax 的操作码,retn 基本上返回 0;在 C/C++ 中

0:000> eb . 33 c0 c3
0:000> u . l2
ntdll!LdrpDoDebuggerBreak+0x2c:
777a05a6 33c0            xor     eax,eax
777a05a8 c3              ret
0:000>   

这可能是一个有很多返回 0 的函数块;声明

就像 if(!a) 返回 0; 做 b = blah(); 如果(!b)返回0;......

在这里,编译器可能已经识别出重复,
并且必须将部分拆分为单独的部分/块作为优化的一部分。

说 0x90 aka NOP 显示为某种 D

.text:005379B0  33 C0 C3 90 90 90 90 90  90 90 90 90 90 90 90 90  3L+ÐÐÐÐÐÐÐÐÐÐÐÐÐ

这表明它可能不是正常的英语语言环境编码