Reverse Dungeon
4.39K subscribers
733 photos
59 videos
987 files
2.28K links
Reverser's notes
The Mentor
1989
Download Telegram
Reverse Dungeon
#include <Windows.h> typedef int(WINAPI* ShellAboutProc)(HWND, LPCSTR, LPCSTR, HICON); typedef int(WINAPI* MessageBoxProc)(HWND, LPCSTR, LPCSTR, UINT); int main() { HMODULE hModule1 = LoadLibrary(TEXT("Shell32.dll")); HMODULE hModule2 = LoadLibrary(…
Возвращаясь к этой штуке

Сегодня посидев и поресёрчив (я там принимал не очень большое значение), итог такой:

Если библиотека грузит ещё библиотеки, они подгружаются в статическом варианте, это не то динамическое / статическое, что при линковке
Тут это просто свойство загруженного модуля
Так вот, в таком случае FreeLibrary не будет работать на выгрузку, даже если вы выгрузите все депенденси всех либ

Соответственно, возвращаясь к опыту
Если мы подгрузили динамически дллку, но ещё одна дллка подгрузила её же в своих зависимостях, загрузчик поставит ей флаг статики (перетрёт флаг динамики) и выгрузить её будет нельзя (не смотря на то, что вроде как мы её динамически руками загружали)

По этому поводу есть единственная статейка чела, которая так и называется "FreeLibrary will not unload your dll" и 2-3 коммента на форуме

https://rstforums.com/forum/topic/110743-make-your-dynamic-module-unfreeable-anti-freelibrary/

https://chat.stackoverflow.com/transcript/138448/2017/3/19/11-12
Forwarded from Zer0Day Lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Zer0Day Lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Zer0Day Lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Zer0Day Lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Zer0Day Lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Simple example of automatic loading dll's with processes which load user32.dll

dll part of the project:
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
MessageBoxA(NULL, (LPCSTR)"hello", (LPCSTR)"world", MB_OK);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

cpp part of the project:
#include <iostream>
#include <Windows.h>

int main() {
HMODULE hModule = LoadLibrary(TEXT("TestDLL.dll"));

std::cout << "aaa";
return 0;
}

Put the dll into
C:\Windows\System32
or
C:\Windows\SysWOW64

Use the dll name in Registry

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]
Registry key if OS is 32-bit

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]
Registry key if OS is 64-bit.

Set registry key LoadAppInit_DLLs to 1
Forwarded from Nullzur
RobustStaticAnalysisofPEMalware.pdf
2 MB
Robust Static Analysis of Portable Executable Malware
Forwarded from DataLeak 🇺🇦
Создал гит для примеров WinAPI'х, чтобы не хранить каждый пример в сообщениях
Created git repo for WinAPI examples, so that I'd not keep each example in messages

https://github.com/TrueBad0ur/WinAPI_examples