Сейчас на форуме: jinoweb (+6 невидимых)

 eXeL@B —› Программирование —› [c++]хук WriteProcessMemory с последующим вытаскиванием данных
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 5.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 13 марта 2018 11:49
· Личное сообщение · #1

Приветствую форумчане!
Возникла идея написать свой unwrapper для игр от компании alawar. Алгоритм продумал:
1) внедряем dll в процесс и просим пользователя запустить игру (в триал режиме).
2) хукаем функцию WriteProcessMemory и получаем украденные байты OEP
Но на 2 же пункте застрял т.к не понимаю как можно хукнуть функцию и вытащить из нее данные.
Если использовать ms detours, то там можно только подменить функцию, но данные ориг. функции вытащить нельзя, или же можно, просто я чего-то не знаю? Язык на котором буду писать: c++




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 13 марта 2018 12:16
· Личное сообщение · #2

OEP пишет:
но данные ориг. функции вытащить нельзя

Почему нельзя? Не знаю, про какой ms detours ты пишешь, написать самому не должно быть проблемой, если мышление ничто не ограничивает.

1) Ставишь джамп в обработчик своей dll
2) Смотришь аргументы: длину данных и буфер
3) Сбрасываешь данные буфера(украденные байты OEP) на диск/в пайпу/ в сокет
4) Передаёшь обратно управление, перед этим выполнив оригинальные затёртые инструкции

-----
IZ.RU




Ранг: 5.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 13 марта 2018 12:32
· Личное сообщение · #3

DenCoder пишет:
Не знаю, про какой ms detours ты пишешь

Библиотека от майкрософт, которая упрощает постановку хука

DenCoder пишет:
1) Ставишь джамп в обработчик своей dll
2) Смотришь аргументы: длину данных и буфер
3) Сбрасываешь данные буфера(украденные байты OEP) на диск/в пайпу/ в сокет
4) Передаёшь обратно управление, перед этим выполнив оригинальные затёртые инструкции

Можно пример пожалуйста, или хотя бы ссылку, где про это можно прочитать?



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 13 марта 2018 12:54 · Поправил: TryAga1n
· Личное сообщение · #4

Прочитай про WriteProcessMemory в msdn. Одним из параметров передается буфер. Так вот при хуке функции тебе нужно взять этот адрес и использовать




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 13 марта 2018 13:27 · Поправил: DenCoder
· Личное сообщение · #5

Code:
  1. //...
  2. BYTE* lpFunc = (BYTE*)GetProcAddress(GetModuleHandle("kernel32.dll"), "WriteProcessMemory");
  3. lpfnWriteProcessMemory = lpFunc;
  4. DWORD fOldProtect;
  5. VirtualProtect(GetCurrentProcess(), lpFunc, 5, PAGE_EXECUTE_READWRITE, &fOldProtect);
  6. *lpFunc = 0xe9;
  7. *(DWORD*)(lpFunc + 1) = fnHookWriteProcessMemory - (lpFunc + 5);
  8. FlushInstructionCache(GetCurrentProcess(), lpFunc, 5);
  9. VirtualProtect(GetCurrentProcess(), lpFunc, 5, fOldProtect, &fOldProtect);
  10. //...
  11.  
  12. BOOL __stdcall fnHookWriteProcessMemory(HANDLE hProcess, BYTE* Address, BYTE* Buffer, SIZE_T dwSize, SIZE_T* pdwRead)
  13. {
  14.   Log(Address, Buffer, dwSize);
  15.  
  16.   __asm
  17.   {
  18.     push ebp
  19.     mov ebp, esp
  20.     jmp lpfnWriteProcessMemory + 5
  21.   }
  22. }


Добавлено спустя 1 минуту
Хотя через IFEO хукать лучше

-----
IZ.RU





Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 13 марта 2018 19:56 · Поправил: difexacaw
· Личное сообщение · #6

OEP

> 2) хукаем функцию WriteProcessMemory и получаем украденные байты OEP

Просто чудесное опиание задачи, значит будем гадать, что говорят звёзды, вы кто по гороскопу лол

Тоесть есть общая функция, некая апи, которая пишет в память, а вам нужно какие то данные получить хз какие. OEP - каким образом это связано с данной апи так же хз и даже сложно представить, так до OEP исполняются не винапи механизмы.

Какой вопрос, такой и ответ.

Сформулировать чётко вопрос или задачу, от этого зависит дальнейший ход событий, ответы вам. Что вы вообще спрашиваете, похоже на поход за пищей на базар.

-----
vx




Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 13 марта 2018 20:44
· Личное сообщение · #7

difexacaw пишет:
OEP - каким образом это связано с данной апи так же хз и даже сложно представить

Просто ты не в теме. Алаваровский враппер - отдельное приложение, которое созрает процесс игры с флагом CREATE_SUSPENDED, восстанавливает в нем спертые с ОЕПа байты и стартует непосредственно игру. Задача у ТСа вполне внятно описана.




Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 13 марта 2018 20:47 · Поправил: difexacaw
· Личное сообщение · #8

TryAga1n

Думаете я не знаю как устроены крипторы и что такое ранпе. Тс это не описал. Задача не сформулирована.

> Просто ты не в теме.

Что значит не в теме.. я один из немногих кто именно в теме. Подумайте прежде чем писать.

-----
vx




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 13 марта 2018 21:18
· Личное сообщение · #9

difexacaw пишет: Думаете я не знаю как устроены крипторы и что такое ранпе. Тс это не описал. Задача не сформулирована.

Ппц ты наркоман, да любой хоть сколь нибудь в тебе понимает задачу без дополнительной воды, с OEP затерли байты, возвращаются они записью через WriteProcessMemory, хукнуть функцию и вернуть байты на место, вся задача.

ТС, зачем тебе велосипеды, возьми готовую библиотеку, хоть тот же https://github.com/stevemk14ebr/PolyHook
посмотри параметры функции в MSDN, а после по образу и подобию примера сделай свой перехват WriteProcessMemory. Задача на минуту.

| Сообщение посчитали полезным: ARCHANGEL

Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 13 марта 2018 21:28 · Поправил: dosprog
· Личное сообщение · #10

А можно запустить враппер через лоадер, подождать старта игрули и читать спокойно байты, из лоадера?
Зачем усложнять?

Но что-то слыхал, там уже не применяется старый способ с краденным стартовым кодом.



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 13 марта 2018 22:47
· Личное сообщение · #11

difexacaw пишет:
Тс это не описал. Задача не сформулирована.

OEP пишет:
unwrapper для игр от компании alawar


difexacaw пишет:
Подумайте прежде чем писать

Принято.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 14 марта 2018 01:36
· Личное сообщение · #12

OEP, --> Link <--
Или нужен свой велосипед?

difexacaw пишет:
Думаете я не знаю как устроены крипторы и что такое ранпе.


думаем, что ты не способен адекватно воспринимать информацию. Вероятно, последствия приёма психо-активных веществ.
Это, кстати, лечится.

| Сообщение посчитали полезным: plutos, DimitarSerg, TryAga1n, DrVB_5_6

Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 14 марта 2018 07:09 · Поправил: dosprog
· Личное сообщение · #13

Слыхал, что нет. Там необратимо отмирают какие-то клетки. Типа, лампочки перегорают, от повышенной напруги.



Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 14 марта 2018 07:17
· Личное сообщение · #14

difexacaw
Странно, а где советы заюзать православный IDP, GPE/GCBE или как там эта фигня называлась и накрыть это сверху VMBE2 шоб аверы не задетектили, а ну или как щадячий вариант че про Avrf не вспомнил? Чето ты совсем сдулся.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 14 марта 2018 07:19
· Личное сообщение · #15

обидно то, что есть люди, может и очень талантливые, со своими идеями, но от них как-то хочется держаться подальше, поскольку любая дискуссия совершенно фатально обращается в срач...
Это очень грустно, но факт.

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: DenCoder, sefkrd, Gideon Vi


Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 14 марта 2018 20:05 · Поправил: difexacaw
· Личное сообщение · #16

Gideon Vi

Ясно, окей. Хоть я и не согласен, но не важно. Просто напомню что бы вы понимали правильно - организм сам выделяет психоактивные вещества, причём которые проходят эфб(и сам мозг их выделяет) и это самые опасные вещества. Они определяют вашу мотивацию, ваш ход мыслей. Так что это мог такое утверждать и быть согласен с этим только тот, кто совсем глупый, либо у кого нет тела и этой биохимии.)

-----
vx





Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 14 марта 2018 20:40 · Поправил: sefkrd
· Личное сообщение · #17

difexacaw пишет:

Так что это мог такое утверждать и быть согласен с этим только тот

| Сообщение посчитали полезным: Gideon Vi

Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 14 марта 2018 21:27
· Личное сообщение · #18

difexacaw
Ты компелировать зи-код то научился наконец, магл?



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 14 марта 2018 22:04
· Личное сообщение · #19

difexacaw пишет:
Так что это мог такое утверждать и быть согласен с этим только тот, кто совсем глупый, либо у кого нет тела и этой биохимии.)

) Тю. Ты видел обычные лампочки, которые на кухне?
Подай туда не 220, а 1000 вольт, - посмотришь, что будет.
Кстати, "думалка" расходуется и в обычном режиме, - но не так быстро.






Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

Создано: 15 марта 2018 00:40
· Личное сообщение · #20

dosprog

Тоесть вы видите какую то аналогию с перегоранием лампочки и работой мозга.. это походу не мне как то рассудок нужно корректировать. Тут судя по всему сплошная паталогия, вон взять #18, чел либо полный дебил, либо какой то школьник-троль малолетний

-----
vx





Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 15 марта 2018 07:02 · Поправил: Gideon Vi
· Личное сообщение · #21

difexacaw пишет:
организм сам выделяет психоактивные вещества


Всё — яд, всё — лекарство; то и другое определяет доза (c) Сам организм себе в нормальном режиме повредить не может, иначе это уже аутоиммунное заболевание. Не твой случай.
Твой случай, вероятно, поступление психо-активных веществ извне.

dosprog пишет:
Типа, лампочки перегорают, от повышенной напруги.


Популярная теория проф. Савельева. Собственно, почему нет. Подай повышенное, но не фатальное напряжение на лампочку, или не умеренно форсируй двигатель и вот результат. Похоже, согласен.

plutos, просто попытайся смотреть на это с улыбкой. Посты difexacaw, обычно, только так и следует читать.

Берегите difexacaw, вам будет без него скучно. Уверен в этом

Alchemistry, чувак, у тебя такой прорыв говн, что закрадываются смутные подозрения о твоём нездоровом интересе к Инде. Право же, difexacaw на твоём фоне, что ромашка в детском садике.

| Сообщение посчитали полезным: plutos, sefkrd

Ранг: 5.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 марта 2018 10:45
· Личное сообщение · #22

Gideon Vi пишет:
OEP, --> Link <--
Или нужен свой велосипед?

хочу в качестве практики написать именно свой. Руками уже умею анварпить их игры, теперь хочется чего-то большего

Добавлено спустя 1 минуту
shellstorm пишет:
ТС, зачем тебе велосипеды, возьми готовую библиотеку, хоть тот же https://github.com/stevemk14ebr/PolyHook
посмотри параметры функции в MSDN, а после по образу и подобию примера сделай свой перехват WriteProcessMemory. Задача на минуту.

Спасибо! Буду пробовать!




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 15 марта 2018 23:06
· Личное сообщение · #23

OEP пишет:
теперь хочется чего-то большего

Учись коду, и меньше "видь" Github и StackOver(подсматривай))..



Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 16 марта 2018 06:58 · Поправил: Alchemistry
· Личное сообщение · #24

Gideon Vi пишет:
Берегите difexacaw, вам будет без него скучно. Уверен в этом





Ранг: 5.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 16 марта 2018 09:45 · Поправил: OEP
· Личное сообщение · #25

shellstorm пишет:
ТС, зачем тебе велосипеды, возьми готовую библиотеку, хоть тот же https://github.com/stevemk14ebr/PolyHook

Что-то не получается у меня использовать данную библиотеку! VS 2012 сыпит ошибками, ссылаясь на файл polyhook.hpp.
https://b.radikal.ru/b14/1803/30/20141118455d.png



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 16 марта 2018 10:21
· Личное сообщение · #26

OEP пишет: VS 2012 сыпит ошибками, ссылаясь на файл polyhook.hpp.

Сразу бы написали версию студии, этот архаизм не поддерживает std 11, а данная версия стандарта минимальная для сборки библиотеки.
Попробуйте альтернативы:
https://github.com/shmuelyr/CaptainHook
https://github.com/TsudaKageyu/minhook
Эти должны завестись.
Ps. Студию пора обновить, на дворе давно уже std 17.

| Сообщение посчитали полезным: plutos

Ранг: 5.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 16 марта 2018 10:40
· Личное сообщение · #27

shellstorm пишет:
Ps. Студию пора обновить, на дворе давно уже std 17.

Знаю! Но VS 2012 самая лучше в плане веса. Все что дальше весит уже не мыслимые размеры!
И+ под эту версию я нашёл ключ, а вот под все остальные не уверен что мне так же повезёт)

Добавлено спустя 2 минуты
А на VS 2017 PolyHook будет работать?



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 16 марта 2018 10:50
· Личное сообщение · #28

OEP пишет: Знаю! Но VS 2012 самая лучше в плане веса.

15 весит ненамного больше, а в 17 можно выбирать , что устанавливать, не ставить весь сопутствующий хлам и размер будет нормальный, 12 сама по себе убогая, как IDE, и язык с тех пор сильно изменился, компиляторы не выбирают исходя из размера. Да, соберется.
С ключами нет проблем и сейчас есть версия visual studio community, она вообще бесплатна.
https://www.visualstudio.com/ru/thank-you-downloading-visual-studio/?sku=Community&rel=15
Если с местом совсем плохо, можно установить build tools (3 гигабайта), без IDE и к нему установить code blocks или code lite в качестве легковесной IDE.



Ранг: 5.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 16 марта 2018 20:29
· Личное сообщение · #29

Поставил VS 2017 и она опять ругается на файл polyhook.hpp. Большинство ошибок одинаковы и говорят следующие:
https://b.radikal.ru/b38/1803/e8/4c6916c69b98t.jpg



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 16 марта 2018 21:15
· Личное сообщение · #30

OEP
Ну так исправь в polyhook.h на:
Code:
  1. inline void XTrace(const char* fmt, ...)



. 1 . 2 . >>
 eXeL@B —› Программирование —› [c++]хук WriteProcessMemory с последующим вытаскиванием данных
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати