小编Tob*_*nce的帖子

无法解密这些字符串

前言

我正在尝试对作者早已不复存在的程序进行反汇编和反向工程.该程序提供了一些我在其他地方尚未找到的独特功能......我对程序的逆向工程感到好奇和好奇.如果你要尝试帮助我找到另一个程序......不要打扰.

问题

我使用的是IDA Pro的瓦特/六角射线反编译得到一些中途体面的伪代码,试图加快逆向工程.我认为有助于加速事情的一件大事就是找出字符串的含义.到目前为止,这是我发现的超过4个字符的字符串:

dword_131894E = 54264588;
dword_131894A = 51381002;
dword_1318946 = 51380998;
dword_1318942 = 52429571;
dword_131893E = 52298503;
runtimeVersion[0] = 836;
szIndex = 0;
do
{
  runtimeVersion[szIndex] = (runtimeVersion[szIndex] - 1) ^ (szIndex + 882) ^ 0x47;
  ++szIndex;
}
while ( szIndex < 11 );
Run Code Online (Sandbox Code Playgroud)

从查看三个字符的字符串的类似伪代码,并使用Hex-Rays悬停类型信息,这是我如何理解这一点:

  • runtimeVersion是一个const wchar
  • 这意味着它具有Unicode字符(UTF-16)
  • 字符串嵌入在内存中,但在这种情况下,弱加密(XOR?)

除了每个字符串的常量"882"不同之外,上述伪代码对于所有大字符串都是相同的.我假设这是一种编译时加密或宏,它逐个查找字符串并"唯一地"加密它们.但问题是,我似乎无法通过复制伪代码获得正确的字符串.这是我在C#中所拥有的:

ushort[] newCharArray = new ushort[rawCharacters.Length];

// Go through and decode all of the characters.
ushort i = 0;
do {
    newCharArray[i] = (ushort)((i + 882) ^ (rawCharacters[i] …
Run Code Online (Sandbox Code Playgroud)

c# c++ reverse-engineering ida

9
推荐指数
1
解决办法
567
查看次数

标签 统计

c# ×1

c++ ×1

ida ×1

reverse-engineering ×1