extern
"C"
__declspec(dllexport) VOID fuzz_method(CHAR
*
filePath);
/
/
AssistantTools.dll
static HMODULE hAssistantTools
=
NULL;
/
/
AssistantTools!XL_ParseTorrentFileW
signed
int
__cdecl XL_ParseTorrentFileW(CHAR
*
aFileName, PVOID
*
a1);
using Fun_XL_ParseTorrentFileW
=
decltype(&XL_ParseTorrentFileW);
static Fun_XL_ParseTorrentFileW fun_XL_ParseTorrentFileW
=
NULL;
/
/
AssistantTools!XL_ReleaseTorrentFileInfoW
void __cdecl XL_ReleaseTorrentFileInfoW(PVOID a1);
using Fun_XL_ReleaseTorrentFileInfoW
=
decltype(&XL_ReleaseTorrentFileInfoW);
static Fun_XL_ReleaseTorrentFileInfoW fun_XL_ReleaseTorrentFileInfoW
=
NULL;
VOID fuzz_method(CHAR
*
filePath)
{
PVOID a1
=
NULL;
fun_XL_ParseTorrentFileW(filePath, &a1);
if
(a1)
{
fun_XL_ReleaseTorrentFileInfoW(a1);
}
return
;
}
int
main(
int
argc, char
*
argv[])
{
CHAR assistantTools_path[MAX_PATH]
=
{
0
};
CHAR
*
pTemp
=
NULL;
if
(
2
!
=
argc)
{
printf(
"Parameter Error\n"
);
goto End;
}
/
/
获取AssistantTools.dll的全路径
if
(
0
=
=
GetModuleFileNameA(NULL, assistantTools_path, sizeof(assistantTools_path)))
{
printf(
"GetModuleFileNameA Error\n"
);
goto End;
}
pTemp
=
strrchr(assistantTools_path,
'\\'
);
if
(NULL
=
=
pTemp)
{
printf(
"strrchr Error\n"
);
goto End;
}
+
+
pTemp;
*
pTemp
=
'\0'
;
strcat(pTemp, ASSISTANTTOOLS_DLL);
/
/
加载AssistantTools.dll并获取函数地址
hAssistantTools
=
LoadLibraryA(assistantTools_path);
if
(NULL
=
=
hAssistantTools)
{
printf(
"LoadLibraryA fail: 0x%x\n"
, GetLastError());
goto End;
}
fun_XL_ParseTorrentFileW
=
(Fun_XL_ParseTorrentFileW)GetProcAddress(hAssistantTools,
"XL_ParseTorrentFileW"
);
if
(NULL
=
=
fun_XL_ParseTorrentFileW)
{
printf(
"GetProcAddress fail\n"
);
goto End;
}
fun_XL_ReleaseTorrentFileInfoW
=
(Fun_XL_ReleaseTorrentFileInfoW)GetProcAddress(hAssistantTools,
"XL_ReleaseTorrentFileInfoW"
);
if
(NULL
=
=
fun_XL_ParseTorrentFileW)
{
printf(
"GetProcAddress fail\n"
);
goto End;
}
fuzz_method(argv[
1
]);
End:
if
(hAssistantTools)
{
FreeLibrary(hAssistantTools);
}
return
0
;
}