Сейчас на форуме: zds, -Sanchez- (+9 невидимых)

 [email protected] —› Протекторы —› In-line для армадиллы
Посл.ответ Сообщение


Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 08 октября 2005 09:51
· Личное сообщение · #1

Пиплы, помогите. Как заинлайнить армадиллу? Я говорю про копи мем. Там надо хучить writeprocessmemory и патчить код, который она пишет, после чего перейти на writeprocessmemory, а как обойти CRC? Или есть более простые способы.



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

Создано: 08 октября 2005 13:40
· Личное сообщение · #2

У Нарваи же вроде все подробно описано. Есть и переведенные. Тутот для Лидии тебе поможет. А вкратце вот:
1 Ставишь на Олю IsDebugerPresent и патч от OutputDebugStringA
2. Ставишь бряк на WaitForDebugEvent и смотришь адрес куда он возвращает доклад (например ХХХХХХХХ) Бряк ставить надо не на первых командах API, иначе Arma тебя пропалит.
3. Ставишь бряк на WriteProcessMemory. Прервался. Смотришь Какой был доклад. Там 4 значения будут одинаковые. Это - OEP. Выполняешь WriteProcessMemory и с помощью Pupe на OEP дочернего процесса вписываешь EBFE.
4. Ставишь опять бряк на WaitForDebugEvent. Прервался в API. НЕ ВЫПОЛНЯЙ ЕЁ. Посмотри в стеке куда надо вернуться и перейди туда (New Origin Here). Занопь вызов WaitForDebugEvent (не забудь про параметры).
5. Сейчас ты находишься в функции, которая расшифровывает код. У неё есть еще одно назначение - затирать распакованный в памяти код. Чтобы не все куски находились там одновременно. Вобщем, тебе надо найти вызов этого "разрушителя" и занопить его.
6. А теперь пришла пора инлайнить . Адрес доклада помнишь? (XXXXXXXX) Четыре dword'а одинаковых там нашел? А теперь пиши
add dword ptr [XXXXXXXX + 18], 1000
add dword ptr [XXXXXXXX + 24], 1000
add dword ptr [XXXXXXXX + 28], 1000
add dword ptr [XXXXXXXX + 54], 1000 ;вроде по этим смещениям там одинаковые dword'ы
cmp dword ptr [XXXXXXXX + 54], YYYYYYYY ;где YYYYYYYY - адрес секции, следующей за .text
jnz < куда-то там откуда был переход на инлайн >
nop ;а сюда ставишь бряк

Теперь все четыре значения в докладе поменяй на адрес секции .text (400000 в основном если exe)
Запускай прогу и когда брякнешся на nop'е все должно быть распаковано. Разделяй процессы. Запускай вторую Олю и делай атач к висящему на OEP дочернему процессу. Восстанавливай байты на OEP и делай dump. Осталось восстановить импорт. Там геморно больно у Нарваи описано. Брякайся на WaitForDebugEvent смотри, появилось ли в памяти значение из IAT. Если нет, то запускай прогу. Снова брякаешься на WaitForDebugEvent, снова смотришь... и т.д. Все хорошо и просто, если бы иногда не приходилось делать так вот раз 500 Я для таких целей давно для себя плагин к Оле свалял который и делает описаную фигню на автомате.

Вощем писать надоело. Есле надо дальше, то говори. Сырцы плугина могу подкинуть. Может до ума его доведешь.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 октября 2005 13:46
· Личное сообщение · #3

Sax0n пишет:
Сырцы плугина могу подкинуть. Может до ума его доведешь

Тоже хотелось бы глянуть... Кинь плз на ara(псина)cracklab()ru



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

Создано: 08 октября 2005 14:03
· Личное сообщение · #4

Залил его на шару
Download-Link: http://rapidshare.de/files/6037261/mYoLLYpLUG.rar.html (182kb)

Там внутри еще хелп по написанию плугинов к Оле

В кратце как им пользоваться и как он должен (но не обязан ) работать.

1. Запускаете родителя. Делаете игноры всех исключений. Незабудте про фигню с OutputDebugStringA
2. Ставите вряк внутри функции WaitForDebugEvent (тока не в самом начале). Shift+F9
3. Прервались первый раз. Идете в Plugins->mYoLLYpLUG. Там вводите PID дочернего процесса (к этому времени дочерний уже будет создан). И адрес, который надо мониторить.
4. Нажимаете Ok. Если все правильно ввели то Оля потормозит и, через несколько секунд выплюнет окно, что мол все тип-топ.
5. Теперь уже ваша работа. Патчите апи GetProcAddress ДОЧЕРНЕГО процесса с помощью Pupe. Разделяете процессы, атачитесь к повисшему на GetProcAddress ребенку, восстанавливаете байты и теперь делайте что хотие. Вы в цикле создания импорта.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 октября 2005 14:08
· Личное сообщение · #5

Sax0n
Респект.
Где вот наши переводчики, перевели бы хелп на русский...



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

Создано: 08 октября 2005 14:20
· Личное сообщение · #6

теперь про сырцы. они as is

по названию проекта можно понять, откуда я тягал шаблон плугина

~ text2dword - преобразует строку с HEX числом в само число.
~ ODBG_Plugindata - callback. устанавливает название плугина в меню
~ ODBG_Pluginaction - callback. собстно что плугин должен делать, когда вы в меню его запускаете
~ ODBG_Pausedex - callback. Когда программа останавливается (по бряку, по ошибке, просто завершается) Оля вызывает эту функцию. В этой функции открывается дочерний процесс, читается указаная память. Если там то же, что и было прежде, то продолжается выполнение проги. Если нет - УРА. Найдено.
~ main_work() - выводит диалог если вы там все ввели, запускает прогу. Т.к. бряк на WaitForDebugEvent у вас стоит, то прога там прервется, проверит память и, есле не найдет изменений, снова запустится. Потом снова прервется... и.т.д. Пока не произойдет изменение в памятили или ошибка

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



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

Создано: 08 октября 2005 14:31
· Личное сообщение · #7

Ara пишет:
Где вот наши переводчики, перевели бы хелп на русский...

Да там не фонтан документация...
Не msdn. Без поллитры и какой-то матери там неуютно себя чувствуешь
Например первый вариант у меня был такой:

цикл
{
проверить изменение в памяти
есть изиенения?
-да выдти из цикла
-нет запустить прогу.
}

Оля вешалась.
Полазив по ихнему форуму нашел решение. Добавил callback, чтоб при остановке на бряке вызывалась моя функция. А в документации по этому поводу я ниче не нашел. Не исключено, конечно, что плохо искал...
Т.ч. хелп оставляет о себе впечатления средней тяжести




Ранг: 69.0 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 08 октября 2005 14:40
· Личное сообщение · #8

Sax0n
Я эту срань пробовал отфакать в MovieCollector по методике из двух туторов (там борьба с возвратом доклада API разная) - разбирался с тутором по наномитам в Арме 4.хх - ХРЕН - не покатило - декриптовалась только одна секция. Выходит - не всегда "катит"...

Ara
Могу помотреть хелпу (хотя, если он на Инглише - электронные переводчики сносно довольно лопатят)




Ранг: 69.0 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 08 октября 2005 14:48 · Поправил: estet
· Личное сообщение · #9

Sax0n пишет:
Четыре dword'а одинаковых там нашел?

Насколько я помню, там ТРИ dword'а... (I mean: в трёх местах там ОЕР виднеется после бряка)

Ara
Так хелпу же по Ольке переводили вроде... - помню большая "тёрка" тут на форуме была. Или по плагинам перевод туда не попал?




Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 09 октября 2005 01:05
· Личное сообщение · #10

Сенк всем, щас пойду разбираться, пока тему не закрываю, вдруг будут вопросы




Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 09 октября 2005 01:37
· Личное сообщение · #11

Ммм, пацаны Я прочитал весь топ и понял, что мне не так поняли Я снимаю арму и с нано и с копимем Я пошёл дальше и решил её заинлайнить (in-line). Спасибо, что откликнулись, но нету ли у кого инфы именно по инлайну? Я смотрел релиз автарара, где он заинлайнил саму арму, но не понял, как он работает Там хучятся writeProcessMemory и ReadFile кажись, но все остальные процедуры инлайна не вызываются, сразу возникает вопрос, а как оно тогда патчит вообще процесс-сын? Может кто хочет со мной поковырять этот релиз? Надо ведь на кряклабе инлайнить арму хоть кому-нибуть

Sax0n
Cool, сенк. Я тебе предлагаю покодить вместе. Си я знаю, но плагины для оли ниразу не писал, хочу попрактиковаться, заодно докодить плагин и выложить на "разтерзание" Связись со мной по мылу плиз, есть что обсудить. [email protected] (заодно пришли возможные глюки в плагине).




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 09 октября 2005 02:55
· Личное сообщение · #12

estet
Не, про плагины хелп не переводили. А надо бы..




Ранг: 69.0 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 09 октября 2005 04:04
· Личное сообщение · #13

Ara
Мож, какие-нить конкретные разделы? Всё переводить - до хрена работы ;->




Ранг: 500.6 (!), 7thx
Активность: 0.260
Статус: Участник

Создано: 09 октября 2005 04:24
· Личное сообщение · #14

Bit-hack

По ссылке четыре тутора про инлайн армы, может поможет (на испанском).

softcomx.spymac.com/



Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 09 октября 2005 04:41
· Личное сообщение · #15

а вот и продолжение этой замечательной серии:
hХХp://www.geocities.com/softcomx/ArmadilloTomoV.zip




Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 09 октября 2005 07:37
· Личное сообщение · #16

arnix
NIKOLA
АГРОМНАЕ спасибо, у меня дядя раньше был переводчиком с испанского Щас ему замылю




Ранг: 500.6 (!), 7thx
Активность: 0.260
Статус: Участник

Создано: 09 октября 2005 13:37
· Личное сообщение · #17

Bit-hack пишет:
у меня дядя раньше был переводчиком с испанского


А может потом поделишся переводом?




Ранг: 299.6 (наставник)
Активность: 0.30
Статус: Участник
Armadillo Killer

Создано: 09 октября 2005 14:09
· Личное сообщение · #18

NIKOLA Да не плохо бы на почитать на руском




Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 09 октября 2005 19:54
· Личное сообщение · #19

NIKOLA пишет:
А может потом поделишся переводом?

нет, т.к. дядя занят и сказал, что статьи слишком специализированные (долго переводить)



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

Создано: 12 октября 2005 12:48
· Личное сообщение · #20

Вопрос может не в тему: А как можно узнать с чем арма(в смысле с нано, с копимем, с инлайн).




Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 12 октября 2005 14:08
· Личное сообщение · #21

Надо замиксовать руки, мозги и прогу в нужных пропорциях А вообще - если один процесс - нет ни наномитов, ни копимем, ни дебагблокера. Есть два процесса - есть или нано или копимем. Грузишь процесс в олю, бряк на врайтпроцессмемори, отпускаешь, если не более двух раз прервёшься - наномиты или дебаг блокер, если много раз - копимем и, возможно, наномиты. Кажись нигде не ошибся



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

Создано: 12 октября 2005 14:11
· Личное сообщение · #22

Дык вот и учимся замиксовывать, спасибо за науку.


 [email protected] —› Протекторы —› In-line для армадиллы
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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