我一直在网上寻找,当涉及到逆向工程时,我看到的只是一堆愚蠢的破解教程。我想更好地将代码从汇编代码转换为 c 或 c++。我有一种感觉,我将不得不及时选择这些,或者制作一堆小程序并将它们分开。我想建立在可能已经存在的基础上。我已经精通我正在做的事情,只是我想变得更好。
例如:
mov eax, DDrawPtr
push 8
push 1E0h
push 280h
mov ecx, [eax]
push eax
call dword ptr [ecx+54h]
Hex-rays 将其翻译为
v1 = (*(**DDrawPtr + 0x54))(*DDrawPtr, 640, 480, 8)
没关系....应该是。
HANDLE v1 = DDrawPtr -> SetDisplayMode(640,480,8);
或者有时 IDA 会犯错误并且会说
int __cdecl sub_41B869()
由于此代码不返回任何内容并且应该是无效的....
我在这里找到了一个简洁的问题和答案Stackoverflow 问题/答案。我想像这样学习更多,因为我意识到 IDA 会犯错误。我想知道如何识别函数类型,更重要的是手动执行此操作,因为我看到 IDA 犯了错误,我觉得我应该学会更好地识别这些错误,看看我如何在需要时手动将其恢复。
这是一本在某种程度上做到了这一点的书,但它从 C 到汇编,而不是相反。逆向工程.pdf
有什么建议?