我正在尝试对作者早已不复存在的程序进行反汇编和反向工程.该程序提供了一些我在其他地方尚未找到的独特功能......我对程序的逆向工程感到好奇和好奇.如果你要尝试帮助我找到另一个程序......不要打扰.
我使用的是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悬停类型信息,这是我如何理解这一点:
除了每个字符串的常量"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)