DLL破解版的解决方法

逆向工程 艾达 dll 快手
2021-07-01 09:49:47

我得到了两个 DLL 文件(链接)任务是从他们那里得到旗帜。首先是我所做的 -original在 IDA 中打开第一个文件(称为)并找到名为_GetFlag. 在此处输入图片说明

据我了解,我需要以某种方式从 DLL 库中调用该函数(这是第一个问题 - 除了它的名称之外,我没有关于该函数的任何信息,所以我想知道我如何准确地调用它)。但是,正如我们所见,即使我知道如何调用它,我们也无法从originalDLL 中获取标志,它说Sry, flag is in the patched version.

好的,我patched在 IDA 中打开了DLL。首先我们看到该文件只能作为二进制文件打开: 在此处输入图片说明

和往常一样,我打开了 Strings 窗口,我们看到了 string "0day is bring your own header day! Flag is: %s"它看起来像是解决方案的关键。

在此处输入图片说明

但是,我不知道在那之后该怎么办。如果有人向我解释如何解决这个问题,我将不胜感激。

1个回答

一旦您修补了格式错误的字节以使修补后的 DLL 正确,您就可以使用类似这样的方法来调用该GetFlag函数。

#include <Windows.h>

typedef DWORD (__cdecl *_GetFlag)();
_GetFlag GetFlag;
HMODULE hDll = NULL;

NTSTATUS main(int argc, char **argv) {
    hDll = LoadLibrary("my_head_flew_away_patched.dll");
    GetFlag = (_GetFlag)GetProcAddress(hDll, "GetFlag");
    GetFlag();
}