Русский / Russian English / Английский

Сейчас на форуме: dezmand07 (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› Помогите с Армой
Посл.ответ Сообщение

Ранг: 35.4 (посетитель)
Статус: Участник

Создано: 17 августа 2020 15:42 · Поправил: Alexus2006 New!
Цитата · Личное сообщение · #1

сделал следующее:
bp OpenMutexA на втором при выходе set eax=1 на следедующем bp видно что мьютекс
"78A3CA1F:SIMULATEEXPIRED"

дальше bp VirtualProtect -> NewProtect "PAGE_READWRITE", затем bp LoadLibraryA -> search push 100 -> binary edit in call 35E4E50 (section with ArmAccess.dll) to retn on enter -> дальше bp CreateThread выходим ищем call edx и там уже OEP.

Все как в мануале (Cracking VidBlaster by Asterix - AoRE Team\Cracking VidBlaster.swf)

Берем ArmInline патчим CodeSplicing
ArmInline также сам верно находит IAT, в ней есть вызовы из секции с ArmAccess.dll, а этак секция подгружется армой искусствено и при дампе ее не будет и вызовы упадут. как быть ? пробовал сделать такую же секцию в файле дампа функции из нее вызываются, но внутри нее все равно падает процесс.

в мануале просто все неразрешенные импорты удаляют, и дальше все как то работает, видимо софт не использоватал API из armaccess.dll

Как быть не понимаю.

--> Link <--



Ранг: 319.8 (мудрец)
Статус: Модератор
CrackLab

Создано: 17 августа 2020 18:44 New!
Цитата · Личное сообщение · #2

Alexus2006 пишет:
Как быть не понимаю

эмулируй в своей длл



Ранг: 35.4 (посетитель)
Статус: Участник

Создано: 17 августа 2020 21:32 · Поправил: Alexus2006 New!
Цитата · Личное сообщение · #3

Эмулировать всё API Армы ? но как ? DLL прога не загружает, арма просто подсовывает ей секцию с DLL. в импорте просто адреса на какие то функции и в коде они просто вызываются:

00D68A16 FF15 18EA7903 CALL DWORD PTR DS:[379EA18]

по адресу 379EA18 лежит IAT:
...
0379EA04 761F6826 ws2_32.recv
0379EA08 761F6C19 ws2_32.send
0379EA0C 761F34B5 ws2_32.sendto
0379EA10 76AA18B2 kernel32.CreateEventA
0379EA14 02B0CAC0
0379EA18 02B07000
0379EA1C 761FD414 ws2_32.recvfrom
0379EA20 76AF02EF kernel32.EnumSystemLocalesW
0379EA24 761FBEC7 ws2_32.gethostname
...

а 02B07000 - это какая функция из этой dll

в этой секции лежит целиком DLL её прямо в файл можно отсюда сохранить
секция легко находится по размеру, он всегда одинаковый
Memory map, item 43
Address=02AC0000
Size=00171000 (1511424.)
Owner= 02AC0000 (itself)
Section=
Type=Priv 00021040
Access=RWE
Initial access=RWE



Ранг: 139.1 (ветеран)
Статус: Участник
realist

Создано: 17 августа 2020 22:24 · Поправил: Jaa New!
Цитата · Личное сообщение · #4

После распаковки армы она подхватывает эту дллку, ну или что мешает добавить нужны функции в свою дллку?!



Ранг: 35.4 (посетитель)
Статус: Участник

Создано: 19 августа 2020 15:25 New!
Цитата · Личное сообщение · #5

Jaa пишет:
После распаковки армы она подхватывает эту дллку

Как подхватывает ? У меня почему то не подхватывает
если при дампе фиксить имопрт и оставить эти не разрешенные имена тогда он действительно будет при запуске икать ?.DLL если же их удалить то дамп просто будет падать при попытках вызвать несуществующие функции.
имен функций тоже нет, как их эмулировать не понятно.
Если эту секцию сдампить в файл и переименовать в DLL, то она ничего не экспортирует.



Ранг: 319.8 (мудрец)
Статус: Модератор
CrackLab

Создано: 19 августа 2020 18:38 New!
Цитата · Личное сообщение · #6

Alexus2006
ну как один из вариков заинжекти ее в отладчике, и поправь адреса в проге, при дампе и фиксе импорта она уже будет в списке модулей.



Ранг: 35.4 (посетитель)
Статус: Участник

Создано: 21 августа 2020 12:00 · Поправил: Alexus2006 New!
Цитата · Личное сообщение · #7

Кто то может посмотреть правильно ли я понял что это OEP (просто он выглядит как то странно):
00D23444 CC INT3
00D23445 E8 C50B0000 CALL tc_serve.00D2400F ; <<< === OEP
00D2344A ^ E9 74FEFFFF JMP tc_serve.00D232C3
00D2344F 68 B0200901 PUSH tc_serve.010920B0
00D23454 FF15 5C960201 CALL DWORD PTR DS:[102965C] ; ntdll.RtlInitializeSListHead
00D2345A C3 RETN

Я пропатчил call 35E4E50 (при каждой загрузке адрес может быть другой, но где то рядом, это первый CALL после push 100) и он сразу делает retn (так мы получим по адресу 0353В208 всю IAT (на скрине видно)
--> Link <-- (картинка почему то не вставляется)
а в секции 035B0000 с размером 171000 (адрес бывает разный но размер всегда одинаковый) находится DLL так как она должны быть в файле похоже на какой то MapViewOfFile, т.е. это не загруженная DLL и распакованная по секциям, и несмотря на это в IAT есть адреса для вызова из нее функций (видно на скрине) и они действительно вызываются, и на этом дамп падает.

если все так, то как это правильно сдампить ? я пробовал отдельно подсовывать эту секцию с длл к дампу, но потом при вызове функции из нее происходит HeapAlloc из другой секции памяти которая была создана (HeapCreate) до того как я попал на OEP и в дампе ее нет и тут снова все падает. Как получить рабочий дамп ?




Ранг: 323.0 (мудрец)
Статус: Участник

Создано: 22 августа 2020 09:42 · Поправил: difexacaw New!
Цитата · Личное сообщение · #8

Alexus2006

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

> DLL так как она должны быть в файле похоже на какой то MapViewOfFile, т.е. это не загруженная DLL и распакованная по секциям, и несмотря на это в IAT есть адреса для вызова из нее функций

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


 eXeL@B —› Вопросы новичков —› Помогите с Армой

Видеокурс ВЗЛОМ