|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 19, 2004 20:43:22 · Поправил: mix Я нашел исходник хука на NTQuerySystemInformation, нo к сожалению он на делфе, я смог перевести почти все на MASM, кроме двух функций : ReplaceIATEntryInOneMod и InterceptFunctions Помогите пожайлуста с переводом, уж очень нужно, заранее благодарен. Вот код хука на Делфе: procedure ReplaceIATEntryInOneMod(pszCallerModName:Pchar;pfnCurrent:FarProc;pfn N ew:FARPROC;hmodCaller:hModule); var ulSize:ULONG; pImportDesc:PIMAGE_IMPORT_DESCRIPTOR;pszModName:PChar; pThunk:PDWORD; ppfn:PFARPROC;ffound:LongBool;written:DWORD; begin pImportDesc := ImageDirectoryEntryToData(Pointer(hmodCaller), TRUE,IMAGE_DIRECTORY_ENTRY_IMPORT, ulSize); if pImportDesc = nil then exit; while pImportDesc.Name<>0 do begin pszModName := PChar(hmodCaller + pImportDesc.Name); if (lstrcmpiA(pszModName, pszCallerModName) = 0) then break; Inc(pImportDesc); end; if (pImportDesc.Name = 0) then exit; pThunk := PDWORD(hmodCaller + pImportDesc.FirstThunk); while pThunk^<>0 do begin ppfn := PFARPROC(pThunk); fFound := (ppfn^ = pfnCurrent); if (fFound) then begin VirtualProtectEx(GetCurrentProcess,ppfn,4,PAGE_EXECUTE_READWRITE,writt en); WriteProcessMemory(GetCurrentProcess, ppfn, @pfnNew, sizeof(pfnNew), Written); exit; end; Inc(pThunk); end; end; procedure InterceptFunctions; var hSnapShot:THandle;me32:MODULEENTRY32; begin addr_NtQuerySystemInformation:=GetProcAddress(getModuleHandle('ntdll.d ll'),'NtQuerySystemInformation'); hSnapShot:=CreateToolHelp32SnapShot(TH32CS_SNAPMODULE,GetCurrentProces sId); if hSnapshot=INVALID_HANDLE_VALUE then exit; try ZeroMemory(@me32,sizeof(MODULEENTRY32)); me32.dwSize:=sizeof(MODULEENTRY32); Module32First(hSnapShot,me32); repeat ReplaceIATEntryInOneMod('ntdll.dll',addr_NtQuerySystemInformation,@MyN tQuerySystemInfo,me32.hModule); until not Module32Next(hSnapShot,me32); finally CloseHandle(hSnapShot); end; end; |
|
|
Дата: Мар 20, 2004 10:47:14 У меня есть такой же на СИ :) Не нужно? |
|
|
Дата: Мар 20, 2004 21:00:08 Мне бы даже можно ДЛЛ скомпилированую, чтобы мало весила. |
|
|
Дата: Мар 20, 2004 22:14:38 · Поправил: hello_world mix Я стелс движок недавно накодил, там есть хук NtQuerySystemInformation, который скрывает процессы с определенным ПИДом. Если надо могу намылить. hello_world@bk.ru |
|
|
Дата: Мар 21, 2004 10:50:13 · Поправил: mix Да, если можно то скинь пожайлуста на moderx@mail.ru |
|
|
Дата: Мар 24, 2004 12:12:54 · Поправил: mix Помогите пожайлуста перевести этот кусок кода: while pThunk^<>0 do begin ppfn := PFARPROC(pThunk); fFound := (ppfn^ = pfnCurrent); if (fFound) then begin VirtualProtectEx(GetCurrentProcess,ppfn,4,PAGE_EXECUTE_READWRITE,writt en); WriteProcessMemory(GetCurrentProcess, ppfn, @pfnNew, sizeof(pfnNew), Written); exit; end; Inc(pThunk); end; я типа перевел но чета не работает: Loop2: cmp DWORD ptr [pThunk],0 //while pThunk^<>0 do je DONE // push pThunk pop ppfn // fFound=EBX // fFound := (ppfn^ = pfnCurrent); mov EAX,DWORD ptr [ppfn] CMP eax,pfnCurrent jne @FallFound //begin push offset written push PAGE_EXECUTE_READWRITE push 4 push ppfn call GetCurrentProcess push EAX Call VirtualProtectEx push offset Written push 4 push offset pfnNew push ppfn call GetCurrentProcess push EAX call WriteProcessMemory //WriteProcessMemory(GetCurrentProcess, ppfn, @pfnNew, sizeof(pfnNew), Written); jmp done //exit; //end; @FallFound: Inc pThunk jmp Loop2 done: Выход из цикла В чем ошибка подскажите пожайлуста? |
|
|
Дата: Мар 24, 2004 12:41:47 mix Разве Delphi:'Inc(pThunk)' == ASM:'Inc pThunk'? |
|
|
Дата: Мар 24, 2004 13:30:13 q_q Разве Delphi:'Inc(pThunk)' == ASM:'Inc pThunk'? Да, верно надо было написать add pThunk,4 но к сожалению даже после этого всеравно цикл не доходит до VirtualProtectEx WriteProcessMemory Может быть у кого нибудь будет другой пример хука таблицы импорта? |
|
|
Дата: Мар 24, 2004 18:51:41 Все ! Ошибка в mov EAX,DWORD ptr [ppfn] CMP eax,pfnCurrent эх, жалко что никто мне так и не помог.Ассемблершики. |
|
|
Дата: Апр 4, 2004 18:31:17 mixможет мне тогда скинешь свой исходник на alexCOБАКАkpteam.com |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.052 |