|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 7, 2004 19:12:41 Запускается прога. В запущенном процессе нужно изменить пару байт. Как это сделать? Может кто приведет пример? Желательно на MASM32 by Hutch :)) |
|
|
Дата: Янв 7, 2004 19:53:36 Легко :-) OpenProcess ReadProcessMemory WriteProcessMemory или CreateRemoteThread и дальше делай что хочешь. |
|
|
Дата: Янв 8, 2004 01:53:18 исходник есть, тока если нужен пиши на мыло kerghan(at)pisem(dot)net |
|
|
Дата: Янв 8, 2004 05:40:52 · Поправил: Asterix.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
OldProtect dd 0
hProcess dd 0
Pid dd 003B8h ; pid процесса, свой поставишь перед компиляцией
AddressToWrite dd 0401000h
ByteToWrite db 0CCh
.code
start:
invoke OpenProcess, PROCESS_ALL_ACCESS, FALSE, Pid
test eax, eax
jz @error
mov hProcess, eax
invoke VirtualProtectEx, hProcess, AddressToWrite, SIZEOF BYTE,\
PAGE_EXECUTE_READWRITE, OFFSET OldProtect
invoke WriteProcessMemory, hProcess, AddressToWrite, OFFSET ByteToWrite, SIZEOF BYTE, NULL
test eax, eax
jz @F
invoke VirtualProtectEx, hProcess, AddressToWrite, SIZEOF BYTE,\
OldProtect, OFFSET OldProtect
@@:
invoke CloseHandle, hProcess
@error:
invoke ExitProcess, 0
end start |
|
|
Дата: Янв 8, 2004 07:13:49 Спасибо за ответы :) На самом деле ситауция такая: Моя прога запускает другую. Эту другую надо пропатчить. Та часть кода, которую надо пропатчить выполняется при запуске проги (проверка регистрации). Получается моей проге надо успеть получить PID процесса и успеть его пропатчить до проверки регистрации. Реально ли это сделать ? |
|
|
Дата: Янв 8, 2004 07:51:59 WELL12 Тогда нужно запускать процесс той проги со флагом CREATE_SUSPENDED, патчить нужные байты (как в предыдущем примере by Asterix) и напоследок вызывать ResumeThread. |
|
|
Дата: Янв 8, 2004 08:47:36 Quantum Спасибо. Может кто дополнит пример Asterix'a ? |
|
|
Дата: Янв 8, 2004 13:11:23 Все! Разобрался :) Спасибо всем за помощь. |
|
|
Дата: Янв 8, 2004 13:46:46 WELL12 Гы-гы, ты бы сразу так и писал, хочу написать Loader, у тебя вдобавок ещё и файл наверно запакован, тогда нужно опрашивать требуемое место в файле по таймеру, когда распакуется патчить. |
|
|
Дата: Янв 8, 2004 14:02:57 Забыл добавить, можно не опрашивать, можно подождать, вот, смотри статью как писать loader. 24732259__loader.txt |
|
|
Дата: Янв 8, 2004 15:04:44 Asterix Благодарю |
|
|
Дата: Янв 10, 2004 03:54:51 · Поправил: Asterix Вот написал loader, может, иногда ;-), пропатчить и запакованный файл :-) правда это fasm :-).
; Loader PE example
format PE GUI 4.0
entry start
include '%fasminc%\win32a.inc'
section '.data' data readable writeable
hProcess dd 0
OldProtect dd 0
szFileName db "target.exe",0
AddressToWrite dd 0401000h
ByteToWrite db 06Ah
StartupInfo STARTUPINFO
ProcessInfo PROCESSINFO
align 4
Buff rb 001h
section '.code' code readable executable
start:
mov [StartupInfo.cb], STARTUPINFO
invoke CreateProcess, szFileName, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED,\
NULL, NULL, StartupInfo, ProcessInfo
test eax, eax
jz @exit
align 4
@loop:
invoke ReadProcessMemory, [ProcessInfo.hProcess], [AddressToWrite], Buff, 001h, NULL
test eax, eax
jz @error
cmp BYTE [Buff], 0CCh
je @found
invoke ResumeThread, [ProcessInfo.hThread]
invoke Sleep, 0
invoke SuspendThread, [ProcessInfo.hThread]
jmp @loop
@found:
invoke VirtualProtectEx, [ProcessInfo.hProcess], [AddressToWrite], 001h,\
PAGE_EXECUTE_READWRITE, OldProtect
invoke WriteProcessMemory, [ProcessInfo.hProcess], [AddressToWrite], ByteToWrite, 001h, NULL
test eax, eax
jz @error
invoke VirtualProtectEx, [ProcessInfo.hProcess], [AddressToWrite], 001h,\
[OldProtect], OldProtect
invoke ResumeThread, [ProcessInfo.hThread]
@close:
invoke CloseHandle, [ProcessInfo.hThread]
invoke CloseHandle, [ProcessInfo.hProcess]
@exit:
invoke ExitProcess, 0
@error:
invoke TerminateProcess, [ProcessInfo.hProcess], 0
jmp @close
section '.idata' import data readable writeable
library kernel, 'KERNEL32.DLL'
import kernel,\
CreateProcess, 'CreateProcessA',\
VirtualProtectEx, 'VirtualProtectEx',\
WriteProcessMemory, 'WriteProcessMemory',\
ReadProcessMemory, 'ReadProcessMemory',\
Sleep, 'Sleep',\
SuspendThread, 'SuspendThread',\
ResumeThread, 'ResumeThread',\
TerminateProcess, 'TerminateProcess',\
CloseHandle, 'CloseHandle',\
ExitProcess, 'ExitProcess'
|
|
|
Дата: Янв 11, 2004 12:39:18 а ты не жадный не то что некоторые жиды (не будем называть их имён). |
|
|
Дата: Янв 11, 2004 15:05:46 2Asterix: А если надо патчить не сам ЕХЕ , а DLL которую он грузит , пробовал через DebugAPI , но нич не получилось ... |
|
|
Дата: Янв 11, 2004 15:27:02 xCoRe Dll можно пропатчить из самого exe, если exe'шник, например, не запакован а dll'ка запакована, или можно вписать патч в саму dll'ку вариантов предостаточно ;-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.241 |