Посл.ответ |
Сообщение |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 25 января 2006 17:14 · Личное сообщение · #1
Опять про лоадер....
У меня возник вопрос как на ASM(на крайний случай на Delphi) написать лоадер который искал бы нужный байт в заданном диапазоне адресов. Я просмотрел все темы про создание лоадеров вручную, но там написано только как патчить байт по фиксированному адресу.
P.S. Мне такой лоадер нужен не из-за DMA, а из-за того что хочу написать лоадер подходящий для разных версий проги.
| Сообщение посчитали полезным: |
|
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 25 января 2006 17:40 · Личное сообщение · #2
А ReadProcessMemory не подойдет...
Типа читаешь в буфер ReadProcessMemory
Ищешь нужный байт, потом WriteProcessMemory
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 45.1 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 25 января 2006 18:09 · Личное сообщение · #3
Только искать не байт а синг. а то промахнутся легко.
| Сообщение посчитали полезным: |
Ранг: 64.6 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 25 января 2006 19:07 · Личное сообщение · #4
ReadProcessMemory или InjectLibrary(это не API, а название функции у Рихтера, тогда обращение просто через указатели)
| Сообщение посчитали полезным: |
Ранг: 45.1 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 25 января 2006 19:13 · Личное сообщение · #5
Step
ReadProcessMemory - ЛОЛ
MSDN:
ReadProcessMemory
The ReadProcessMemory function reads data from an area of memory in a specified process. The entire area to be read must be accessible, or the operation fails.
BOOL ReadProcessMemory(
HANDLE hProcess,
LPCVOID lpBaseAddress,
LPVOID lpBuffer,
SIZE_T nSize,
SIZE_T* lpNumberOfBytesRead
);
| Сообщение посчитали полезным: |
Ранг: 64.6 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 25 января 2006 19:16 · Личное сообщение · #6
xDriver
1. Выбирай выражения.
2. Читай внимательней. Речь об InjectLibrary. Хотя если ты найдёшь её в MSDN...
3. Где ты такой умный взялся?
| Сообщение посчитали полезным: |
Ранг: 45.1 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 25 января 2006 19:39 · Личное сообщение · #7
Step
1) Какие выражения ? (конкректно).
2) Тогда пиши нормально ReadProcessMemory или InjectLibrary(это не API,
3) выбирай выражения
| Сообщение посчитали полезным: |
 Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 25 января 2006 19:43 · Личное сообщение · #8
Что за флуд?
| Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 25 января 2006 20:10 · Личное сообщение · #9
Можно пожалуйста кусками кода, а не отдельными API
| Сообщение посчитали полезным: |
 Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 25 января 2006 20:23 · Личное сообщение · #10
Veliant пишет:
Можно пожалуйста кусками кода, а не отдельными API
Может уже готовый написать, чего уж там?
| Сообщение посчитали полезным: |
 Ранг: 605.2 (!), 341thx Активность: 0.47↘0.25 Статус: Модератор Research & Development
|
Создано: 25 января 2006 21:39 · Личное сообщение · #11
самый простой способ - при помощи ReadProcessMemory в буфер грузишь достаточно большой кусок кода, ищешь в нём, не нашёл - грузишь ещё и т.д.
если прога не пакована, то можно вообще сначала смапить файл, в нём всё найти, перевести в VA, а потом уж с готовыми данными патчить процесс в памяти.
----- EnJoy! | Сообщение посчитали полезным: |
Ранг: 160.9 (ветеран), 1thx Активность: 0.05↘0 Статус: Участник
|
Создано: 25 января 2006 22:10 · Личное сообщение · #12
[code]
MOV ESI, [откуда ищем]
CLD
MOV ECX, 2h --->сколько байт для сравнения
MOV EDI, [что ищем]
REPE CMPSB --->сравниваем результаты
[/code]
Все это использовать с ReadProcessMemory и все можно найти
| Сообщение посчитали полезным: |
Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 25 января 2006 23:07 · Личное сообщение · #13
спасибо
| Сообщение посчитали полезным: |