未解决
[求助]winafl测试用例导致目标程序崩溃问题
发表于:
2020-7-20 21:36
3318
未解决 [求助]winafl测试用例导致目标程序崩溃问题
我在用winafl测试一个DLL。fuzzer运行到perform_dry_run()中的calibrate_case()的时候,在循环run_target时,第一次成功,第二次就失败了。第二次失败的原因是WriteCommandToPipe('F')后,目标程序崩溃了,ReadCommandFromPipe收到0,然后程序返回Test case 'id_000000' results in a crash。
calibrate_case在循环执行run_target时,第一次成功了,而且此时目标程序没有崩溃,说明我的测试用例id_000000是正常的(实际上这是正常运行时的一个用例,它没有问题)。
第二次失败的原因我不知道如何跟踪。如果哪位大哥知道原因,或者有好的调试这类问题的办法,请指导我一下,感激。
我的目标程序是我自己写的,主要是参考了Fuzz 工具 WinAFL 的使用感受 - 对 FreeImage 图片解析库进行模糊测试 ^_^
下面是我自己写的目标程序:
#include <Winsock2.h>
#include "windows.h"
#include "stdio.h"
#pragma comment (lib, "ws2_32.lib")
//typedef void(*GetSysIniFile)(char *dest);
//typedef int(*RealDB_GetPrivateProfileInt)(LPCSTR lpAppName, LPCSTR lpKeyName, INT nDefault, LPCSTR lpFileName);
typedef void(*RealDBInit)();
typedef bool(*RtdbManagerInit)(bool a2);
extern "C" __declspec(dllexport) void fuzzMe(RtdbManagerInit pRtdbManagerInit, DWORD pNodeName);
extern "C" __declspec(dllexport) int main(int argc, char** argv);
char A4F0[0x1000] = "";
int main(int argc, char *argv[])
{
HMODULE module = LoadLibraryA("RealDB.dll");
BOOL b = FALSE;
//GetSysIniFile pGetSysIniFile = (GetSysIniFile)GetProcAddress(module, (LPCSTR)313);
//RealDB_GetPrivateProfileInt pGetPrivateProfileInt = (RealDB_GetPrivateProfileInt)GetProcAddress(module, (LPCSTR)587);
RealDBInit pRealDBInit = (RealDBInit)GetProcAddress(module, (LPCSTR)16);
RtdbManagerInit pRtdbManagerInit = (RtdbManagerInit)GetProcAddress(module, (LPCSTR)441);
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 0), &wsaData);
DWORD pNodeName;
pNodeName = (DWORD)A4F0;
__asm {
mov ecx, pNodeName;
}
pRealDBInit();
fuzzMe(pRtdbManagerInit, pNodeName);
FreeLibrary(module);
return 0;
}
void fuzzMe(RtdbManagerInit pRtdbManagerInit, DWORD pNodeName)
{
__asm {
mov ecx, pNodeName;
}
pRtdbManagerInit(FALSE);
__asm {
sub esp, 4;
}
}
这是我的fuzz命令:
afl-fuzz.exe -i Path_in -o Path_out -D Path_DynamoRIO\bin32 -t 20000 -f Path\currentsize -- -coverage_module RealDB.dll -fuzz_iterations 5000 -target_module test2.exe -target_offset 0x1000 -nargs 1 -- Path\test2.exe @@
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2020-7-20 21:37
被吴俊编辑
,原因: