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

 eXeL@B —› Протекторы —› Неизвестный протектор Leuco Shell
Посл.ответ Сообщение

Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 июля 2018 18:21 · Поправил: developpb
· Личное сообщение · #1

Занимался написанием сервера под одну корейскую игрушку, но вчера вышло обновление в котором игру запаковали неизвестным протектором, гуглил, но информации о нём крайне мало.

Как я понял исполняемым файлом стал протектор, который из памяти подгружает модуль с самой игрой, но этот модуль скрывается (пробовал искать в PETools). Если делать дамп тем же PETools то он получается на *5мб (exe игры в чистом виде весил 9.5мб, а после упаковки стал 15мб) и если загрузить его в ida там нет ничего от самой игры.

Собственно вопрос: как задампить эту игру, чтобы я мог работать с ней в ida?



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 19 июля 2018 18:49 · Поправил: VOLKOFF
· Личное сообщение · #2

Тут самым правильным (имхо) подходом будет полный дамп памяти (например с помощью Live RAM Capturer) и разбор в Volatility Framework.
Сразу все встанет на свои места, любые модули он позволяет дампить прямо со снимка.



Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 июля 2018 19:28
· Личное сообщение · #3

VOLKOFF, а можно подробнее о разборе в Volatility Framework?




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 19 июля 2018 19:30 · Поправил: f13nd
· Личное сообщение · #4

Code:
  1. debug191:00000000051E0000
  2. debug195:0000000005200000
  3. debug197:0000000005210000
  4. debug199:0000000005260000
  5. debug208:00000000056C0000
  6. debug210:00000000056D0000
  7. debug214:00000000062A0000
  8. debug216:00000000062B0000
  9. debug220:00000000062D0000
  10. debug228:0000000006400000
  11. debug230:0000000006490000
  12. debug236:00000000064C0000
  13. debug252:000000000A9A0000
  14. debug254:000000000A9B0000
  15. debug256:000000000A9C0000
  16. debug258:000000000A9D0000
  17. debug260:000000000A9E0000
  18. debug264:000000000AA00000
  19. debug266:000000000AA10000
  20. debug268:000000000AA20000
  21. debug270:000000000AA30000
  22. debug272:000000000AA40000
  23. debug274:000000000AA50000
  24. debug276:000000000AA60000
  25. debug278:000000000AA70000
  26. debug280:000000000AA80000
  27. debug282:000000000AA90000
  28. debug284:000000000AAA0000
Есть там куча секций с PE-заголовком ('MZ' в начале) и правдоподобным круглым адресом, не помеченных как секции модулей. Скорей всего в них. Дампишь весь процесс в диспетчере задач, открываешь .dmp в иде, wdk (не последней версии) должен быть установлен. Потом иду закрываешь с галкой take memory snapshot, all segments.

-----
2 оттенка серого


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

Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 19 июля 2018 20:34 · Поправил: VOLKOFF
· Личное сообщение · #5

Про Volatility, достаточно доки почитать.
А если попробовать подход попроще, можно одной консольной командой сдампить модули из памяти целевого процесса этим

Code:
  1. dumping 'dll' at 2AB0000 to file 'PointBlank_exe_PID1058_hiddenmodule_2AB0000_x86.dll'
  2. dumping 'dll' at 2C60000 to file 'PointBlank_exe_PID1058_hiddenmodule_2C60000_x86.dll'
  3. dumping 'dll' at 2E00000 to file 'PointBlank_exe_PID1058_hiddenmodule_2E00000_x86.dll'
  4. dumping 'dll' at 2E50000 to file 'PointBlank_exe_PID1058_hiddenmodule_2E50000_x86.dll'
  5. dumping 'dll' at 2E60000 to file 'PointBlank_exe_PID1058_hiddenmodule_2E60000_x86.dll'
  6. dumping 'dll' at 2E70000 to file 'PointBlank_exe_PID1058_hiddenmodule_2E70000_x86.dll'
  7. dumping 'dll' at 2E80000 to file 'PointBlank_exe_PID1058_hiddenmodule_2E80000_x86.dll'
  8. dumping 'dll' at 2E90000 to file 'PointBlank_exe_PID1058_hiddenmodule_2E90000_x86.dll'
  9. dumping 'dll' at 2EE0000 to file 'PointBlank_exe_PID1058_hiddenmodule_2EE0000_x86.dll'
  10. dumping 'dll' at 2EF0000 to file 'PointBlank_exe_PID1058_hiddenmodule_2EF0000_x86.dll'
  11. dumping 'dll' at 2F00000 to file 'PointBlank_exe_PID1058_hiddenmodule_2F00000_x86.dll'
  12. dumping 'dll' at 2F50000 to file 'PointBlank_exe_PID1058_hiddenmodule_2F50000_x86.dll'
  13. dumping 'dll' at 31A0000 to file 'PointBlank_exe_PID1058_hiddenmodule_31A0000_x86.dll'
  14. dumping 'dll' at 31B0000 to file 'PointBlank_exe_PID1058_hiddenmodule_31B0000_x86.dll'
  15. dumping 'dll' at 31C0000 to file 'PointBlank_exe_PID1058_hiddenmodule_31C0000_x86.dll'
  16. dumping 'dll' at 31D0000 to file 'PointBlank_exe_PID1058_hiddenmodule_31D0000_x86.dll'
  17.  
  18. dumping 'dll' at 3280000 to file 'PointBlank_exe_PID1058_hiddenmodule_3280000_x86.dll'
  19. dumping 'dll' at 3670000 to file 'PointBlank_exe_PID1058_hiddenmodule_3670000_x86.dll'
  20. dumping 'dll' at 3680000 to file 'PointBlank_exe_PID1058_hiddenmodule_3680000_x86.dll'
  21. dumping 'dll' at 3CF0000 to file 'PointBlank_exe_PID1058_hiddenmodule_3CF0000_x86.dll'
  22. dumping 'dll' at 40D0000 to file 'PointBlank_exe_PID1058_hiddenmodule_40D0000_x86.dll'
  23. dumping 'dll' at 41E0000 to file 'PointBlank_exe_PID1058_hiddenmodule_41E0000_x86.dll'
  24. dumping 'exe' at 5220000 to file 'PointBlank_exe_PID1058_hiddenmodule_5220000_x86.exe'
  25. dumping 'dll' at 7510000 to file 'PointBlank_exe_PID1058_hiddenmodule_7510000_x86.dll'
  26. dumping 'dll' at 724E0000 to file 'PointBlank_exe_PID1058_hiddenmodule_724E0000_x64.dll'
  27. dumping 'dll' at 724F0000 to file 'PointBlank_exe_PID1058_hiddenmodule_724F0000_x64.dll'
  28. dumping 'dll' at 72550000 to file 'PointBlank_exe_PID1058_hiddenmodule_72550000_x64.dll'
  29. dumping 'dll' at 76F20000 to file 'PointBlank_exe_PID1058_hiddenmodule_76F20000_x64.dll'
  30.  
  31. Dumping unattached executable code chunk from 0x920000.
  32. dumping 'dll' at 920000 to file 'PointBlank_exe_PID1058_codechunk_920000_x64.dll'
  33. dumping 'dll' at 920000 to file 'PointBlank_exe_PID1058_codechunk_920000_x86.dll'
  34. Dumping unattached executable code chunk from 0x92D0000.
  35. dumping 'dll' at 92D0000 to file 'PointBlank_exe_PID1058_codechunk_92D0000_x64.dll'
  36. dumping 'dll' at 92D0000 to file 'PointBlank_exe_PID1058_codechunk_92D0000_x86.dll'
  37.  
  38. хотя что-то из вывода может быть "моими" хуками


Полно hiddenmodule_ХХХ0000_xХХ.dll
Дампятся валидные PE, бери и изучай

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


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

Создано: 19 июля 2018 20:40 · Поправил: difexacaw
· Личное сообщение · #6

> _hiddenmodule

Фишка в том, что системный загрузчик использует ядерный сервис для сравнения проекций, поэтому штатная загрузка копии невозможна, это значит что это не просто релоцированные копии, а если и так, то использован загрузчик из памяти.

Нужно снимать сервисный лог, иначе ничего не получится.

-----
vx





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 19 июля 2018 20:48
· Личное сообщение · #7

difexacaw пишет:
Нужно снимать сервисный лог, иначе ничего не получится.

Нужно составить коллективную телеграмму и отправить немедленно!

-----
2 оттенка серого





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

Создано: 19 июля 2018 20:55 · Поправил: difexacaw
· Личное сообщение · #8

f13nd

Очень познавательно, но по делу есть варианта два. Либо реверсить вручную, что тс сделать врядле сможет, либо посмотреть что там оно делает последовательно по каждому сервису. Иного варианта я не вижу, я бы выбрал второй вариант, что бы не тратить время. Это очень просто сделать, сервисы вызываются всегда через call, так что адрес возврата в пределы проекции всегда имеется и так можно отфильтровать например отладчиком, ну или иначе, кому что удобно.

-----
vx





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 19 июля 2018 20:56 · Поправил: f13nd
· Личное сообщение · #9

difexacaw пишет:
Либо реверсить вручную, что тс сделать врядле сможет, либо посмотреть что там оно делает последовательно по каждому сервису.

Внимательно пост перечитай, касательно задачи, что надо сделать.

ЗЫ: касательно можества-неможества очень смешно. Я еще пока не видел ни разу, чтоб ты что-то мог.

-----
2 оттенка серого




Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 19 июля 2018 21:03
· Личное сообщение · #10

difexacaw пишет:
Нужно снимать сервисный лог, иначе ничего не получится

Нужно почитать доки Volatility и успокоиться
Ничего лучше для исследования в подобных случаях еще не придумали. Поскольку снапшот системы содержит полный набор валидных адресов на момент снятия... ну дальше надеюсь понятно.
Как я сразу написал это самое правильное решение, однако не всегда нужно включать педанта и быть адептом бескомпромиссных канонических решений, если pd нормально справится, нафега по воробьям из пушки-то?



Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 июля 2018 21:03 · Поправил: developpb
· Личное сообщение · #11

VOLKOFF, сдампил и нашёл модуль с игрой. Пытаюсь загнать его в ida.



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 19 июля 2018 21:38 · Поправил: VOLKOFF
· Личное сообщение · #12

developpb пишет:
сдампил и нашёл модуль с игрой

О чем я и говорил

В идеале тебе надо будет еще дамп пофиксить, в иду он загрузится итак без проблем, так что можешь прямо из нее, ну или любой другой тулзой для фикса дампов.
Ну это конечно если тебе запускаемый exe нужен будет (я хз как там игра твоя устроена), иначе не парься.



Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 июля 2018 21:46 · Поправил: developpb
· Личное сообщение · #13

VOLKOFF пишет:
В идеале тебе надо будет еще дамп пофиксить, в иду он загрузится итак без проблем, так что можешь прямо из нее, ну или любой другой тулзой для фикса дампов.
Ну это конечно если тебе запускаемый exe нужен будет (я хз как там игра твоя устроена), иначе не парься.

Спасибо большое за помощь! Да я как раз хотел узнать чем его можно пофиксить)




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

Создано: 19 июля 2018 22:21
· Личное сообщение · #14

developpb пишет:
Спасибо большое за помощь! Да я как раз хотел узнать чем его можно пофиксить)

Не забудь снять сервисный лог и загнать все это в визор!!11 (а то ничего не получицо)

-----
В облачке многоточия


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


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

Создано: 20 июля 2018 00:44
· Личное сообщение · #15

Boostyq пишет:
Не забудь снять сервисный лог и загнать все это в визор!!11 (а то ничего не получицо)


это типа сарказм, да? а то у меня с чувствой юмора не очень, возьму и загоню...

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




Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 июля 2018 01:16 · Поправил: developpb
· Личное сообщение · #16

есть какой-то простой способ пофиксить дамп, желательно пошагово?



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 20 июля 2018 05:21
· Личное сообщение · #17

developpb пишет:
простой способ пофиксить дамп, желательно пошагово?

Пошагово:
1. Идешь сюда
2. Внимательно читаешь шапку
3. Пишешь пост

ибо проделанной работы никакой, а в запросах могут завернуть т.к. клиент игры.
Не забудь упомянуть, что твой "неизвестный протектор Leuco Shell" это всего лишь Cryptect.
Его с плугом можно даже под дебагером норм смотреть. Дампить можно не рандомно, а подсмотреть через VirtualAlloc куда он распаковывает оригинальный PE. Образ тоже без особых проблем фиксится потом (~10Мб).
Перед этим я бы убедился, что к твоим пакетам не добавили шифрование, или новый формат. Как-то так.
В лс писать тоже не надо, не люблю я эти читерские дела, нужно, приложи хоть минимум усилий для "написания сервера" Добра и удач!



Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 июля 2018 11:03 · Поправил: developpb
· Личное сообщение · #18

VOLKOFF пишет:
1. Идешь сюда

Такой вариант мне не подходит, так как клиент игры обновляется каждую неделю.
VOLKOFF пишет:
Не забудь упомянуть, что твой "неизвестный протектор Leuco Shell" это всего лишь Cryptect.

Вполне возможно, но название сути не меняет
VOLKOFF пишет:
приложи хоть минимум усилий

Пытался по мере своих знаний. Поэтому сюда и написал)

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




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 20 июля 2018 11:08 · Поправил: f13nd
· Личное сообщение · #19

developpb пишет:
Такой вариант мне не подходит, так как игра обновляется каждую неделю.

Такой вариант не особенно нужен, ломать-то там нечего.

-----
2 оттенка серого



 eXeL@B —› Протекторы —› Неизвестный протектор Leuco Shell
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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