#include <Windows.h> #include <iostream> //--------------------импортируем функции testlib.dll-------------------------- #pragma comment(lib,"..\\debug\\testlib.lib") extern "C" int WINAPI test(int x); //----------------------------------------------------------------------------------- int main(char*, char*) { //LoadLibrary(L"patcher.dll"); //какимто волшебным образом грузим патч getchar(); test(0); getchar(); return 0; };
#include <Windows.h> #include <iostream> int WINAPI DllMain(HINSTANCE hInstance, DWORD fdReason, PVOID pvReserved) { return TRUE; }; extern "C" int WINAPI test(int x) //экспорт { if (x==0) { printf("street magic failed\n"); } else if (x==1) { printf("oO pechen'ki \n"); } else { printf("crazy magic \n"); }; return 0; };
LIBRARY "testlib" EXPORTS test @666
.text:1001108C jmp test_0 //это возвращает GetProcAddres .............. ...... .............. .text:10011380 .text:10011380 ; =============== S U B R O U T I N E ======================================= .text:10011380 .text:10011380 ; Attributes: bp-based frame .text:10011380 .text:10011380 test_0 proc near ; CODE XREF: testj .text:10011380 .text:10011380 var_C0 = byte ptr -0C0h .text:10011380 arg_0 = dword ptr 8 .text:10011380 .text:10011380 push ebp .text:10011381 mov ebp, esp .text:10011383 sub esp, 0C0h .text:10011389 push ebx .text:1001138A push esi .text:1001138B push edi .text:1001138C lea edi, [ebp+var_C0] .text:10011392 mov ecx, 30h .text:10011397 mov eax, 0CCCCCCCCh .text:1001139C rep stosd .text:1001139E cmp [ebp+arg_0], 0 .text:100113A2 jnz short loc_100113BD .text:100113A4 mov esi, esp .text:100113A6 push offset aStreetMagicFai ; "street magic failed\n" .text:100113AB call ds:__imp__printf .text:100113B1 add esp, 4 .text:100113B4 cmp esi, esp .text:100113B6 call j__RTC_CheckEsp .text:100113BB jmp short loc_100113F3 .text:100113BD ; --------------------------------------------------------------------------- .text:100113BD .text:100113BD loc_100113BD: ; CODE XREF: test_0+22j .text:100113BD cmp [ebp+arg_0], 1 .text:100113C1 jnz short loc_100113DC .text:100113C3 mov esi, esp .text:100113C5 push offset aOoPechenKi ; "oO pechen'ki \n" .text:100113CA call ds:__imp__printf ;интересует этот случай .text:100113D0 add esp, 4 .text:100113D3 cmp esi, esp .text:100113D5 call j__RTC_CheckEsp .text:100113DA jmp short loc_100113F3 .text:100113DC ; --------------------------------------------------------------------------- .text:100113DC .text:100113DC loc_100113DC: ; CODE XREF: test_0+41j .text:100113DC mov esi, esp .text:100113DE push offset aCrazyMagic ; "crazy magic \n" .text:100113E3 call ds:__imp__printf .text:100113E9 add esp, 4 .text:100113EC cmp esi, esp .text:100113EE call j__RTC_CheckEsp .text:100113F3 .text:100113F3 loc_100113F3: ; CODE XREF: test_0+3Bj .text:100113F3 ; test_0+5Aj .text:100113F3 xor eax, eax .text:100113F5 pop edi .text:100113F6 pop esi .text:100113F7 pop ebx .text:100113F8 add esp, 0C0h .text:100113FE cmp ebp, esp .text:10011400 call j__RTC_CheckEsp .text:10011405 mov esp, ebp .text:10011407 pop ebp .text:10011408 retn 4 .text:10011408 test_0 endp .text:10011408 .text:10011408; ---------------------------------------------------------------------------
#include <Windows.h> typedef int (WINAPI *testEx)(int x); extern "C" int WINAPI fakeprintf(char* data) { //тут будут всякие шаманства // // return 0; }; int WINAPI DllMain(HINSTANCE hInstance, DWORD fdReason, PVOID pvReserved) { LPWCH name = new WCHAR[MAX_PATH]; GetModuleFileNameW(0,name, MAX_PATH); MessageBox(0,name,L"запустилась",MB_OK);//тут будет проверка name HMODULE hlib = GetModuleHandle(L"testlib"); testEx f = (testEx)GetProcAddress(hlib,"test");//f=0x1001108C //и тут типа закончилась фантазия...... //......пойду убьюсь return TRUE; };
LIBRARY "patcher" EXPORTS fakeprintf @1
Сообщение от Part!zan:
возьми любой патчер, работающей в рантайме (он же - лоадер), их в инете навалом
Сообщение от Part!zan:
сделай в начале честного принтф джамп на свой принтф.
Сообщение от xxx-men:
чо написать в поисковике
Сообщение от xxx-men:
меня интересует только один случай
Сообщение от xxx-men:
придеца работать в агресивной среде, где многа кулхацкерского софта
Сообщение от Part!zan:
достаточно только проверить откуда в тебя перешли, глянув в стек, ты же знаешь адрес нужного тебе места...
Сообщение от Part!zan:
а подробнее?
Сообщение от xxx-men:
защита грузит .....
Сообщение от xxx-men:
гамно редкосное.....
Сообщение от Part!zan:
с кем, из двух перечисленных, ты собрался бороться?
.100113CA FF156C820110 call printf ; MSVCR80D.dll
0000A4D2: FF2528397210 jmp d,[10723928]; джамп на send из wsock32 --- - --- 00015BBB: 50 push eax 00015BBC: 51 push ecx 00015BBD: E81049FFFF call 00000A4D2 ; нужный вызов 00015BC2: 8BF0 mov esi,eax
Сообщение от Part!zan:
Правь его.