eXeL@B —› Протекторы —› проблема с армой |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 04 января 2006 17:39 · Личное сообщение · #1 пытался сделать по туториалу Benina (PART 1: DUMP FILE Unpack Armadillo - Copymem Target: GetRight 5.0) дамп одной проги, но застрял на шаге Find Cripter Call! там надо было прерваться по bp WriteProcessMemory и сделать F9, после чего посмотреть в списке Call Stack of main Thread и найти в этом окне декриптор. у меня же в этом окне кроме самой функции kernel32.WriteProcessMemory нету других вызовов. что делать в таком случае? |
|
Создано: 05 января 2006 06:12 · Личное сообщение · #2 Что-то мутишь Значит это не тот WriteProcessMemory который тебе нужен. Лови следующий. Еще начало копимем-процедуры можно поискать по сигнатуре: and eax, 80000007h или: and edx, 80000007h А место которое ты ищешь, тоже по сигнатуре можно найти: add eax, 0EBFB74E8h А если ты все таки ты копимем не отрубишь, то знай, что дамп можно снять и не убивая копимем. Только дампить придется небольшими кусками, с размером думаю сам разберешься. |
|
Создано: 05 января 2006 08:23 · Личное сообщение · #3 А, видел я этот глюк в статье. Вот мой метод решение (поправил статью и выдрал этот кусок): А сейчас у нас нет такого лога, видать Нарваха где-то промахнулся или что. Нарваха пишет (В call stack верхняя строчка - где мы находимся в настоящее время, а столбец CALLED FROM показывает адрес 4684A4 – место в программе, из которого была вызвана эта функция api. Т.к. этот вызов внутри вышесказанного декриптора,сам декриптор - следующий (ниже) - 467217.). Если у Вас всё как у Нарвахи, тогда делайте, как написал он, у меня по другому и я “придумал” другой способ. Перейдите обратно с CPU и нажмите два раза Ctrl+F9. Видим: 00469386 52 PUSH EDX 00469387 E847030000 CALL 004696D3 0046938C 83C40C ADD ESP, 0C <-Тут очутились 0046938F 25FF000000 AND EAX, 0FF 00469394 85C0 TEST EAX, EAX 00469396 7507 JNZ SHORT 0046939F Дак вот CALL 004696D3 и есть CALL DECRYPTOR. Конец примечания от BiT-H@ck`а. Статья ru_83_84_Arm_3_Lydia_CopyMemII_IAT |
|
Создано: 05 января 2006 12:05 · Личное сообщение · #4 Bit-hack пишет: и есть CALL DECRYPTOR дык он же вроде про "Find Cripter Call" спрашивает ;) при чём тут декриптор ? nobody пишет: после чего посмотреть в списке Call Stack of main Thread и найти в этом окне декриптор. есть у меня старый скриптик, который получает полную секцию кода и в том числе логит значение ENCRIPTER CALL и OEP, скриптик работает на всех версиях армы (за исключением мб совсем старых), но по понятным причинам на новых армах он ненужен...
|
|
Создано: 05 января 2006 14:20 · Личное сообщение · #5 |
|
Создано: 05 января 2006 14:38 · Личное сообщение · #6 |
|
Создано: 05 января 2006 14:52 · Поправил: nobody · Личное сообщение · #7 А если ты все таки ты копимем не отрубишь, то знай, что дамп можно снять и не убивая копимем. Только дампить придется небольшими кусками, с размером думаю сам разберешься. TOG, шутишь чтоли?)) я так понимаю что в 0012DB2C 00649937 /CALL to WriteProcessMemory from soft.00649931 0012DB30 00000048 |hProcess = 00000048 (window) 0012DB34 005ED000 |Address = 5ED000 0012DB38 0037CE58 |Buffer = 0037CE58 0012DB3C 00001000 |BytesToWrite = 1000 (4096.) 0012DB40 0012DC48 \pBytesWritten = 0012DC48 BytesToWrite=1000 это и есть тот кусок проги которую копимем пишет в память? так какже найти encryptor и занопить его, чтобы он "хороший" код не портил! |
|
Создано: 05 января 2006 15:06 · Личное сообщение · #8 nobody пишет: так какже найти encryptor и занопить его, чтобы он "хороший" код не портил! Что ты мучишься ? bpm [_любой_адрес_из_секции_кода_который_уже_раскриптован] W и ты внутри енкриптора TOG пишет: Только дампить придется небольшими кусками, с размером думаю сам разберешься. nobody пишет: TOG, шутишь чтоли?)) Никаких шуток. Я так и делал, когда не знал как отрубать копимем. |
|
Создано: 05 января 2006 15:12 · Личное сообщение · #9 |
|
Создано: 05 января 2006 17:15 · Личное сообщение · #10 nobody пишет: я так понял, что после выполнения твоего скрипта можно делать дамп проги? ну я бы сказал как минимум дамп секции кода, а дамп проги лучше снимать уже потом из второго процесса. но, повторюсь, в новых версиях армы (начиная где-то с 3,7 вроде) такой способ уже не нужен, т.к. 1) в секция кода будет испорчена (илиминатион, кодесплитинг) 2) с появлением илиминатиона появилась и возможность получить от армы всю расшифрованную секцию кода непосредственно во втором процессе. |
|
Создано: 05 января 2006 17:32 · Личное сообщение · #11 |
|
Создано: 05 января 2006 19:20 · Поправил: nobody · Личное сообщение · #12 хмммм... с "грехом пополам" дошёл я до пункта 6.Find address start and end IAT: в нем надо child process'e найти вызов библиотечных функций и затем выделить IAT но! в процессе нет не одного прямого вызова! т.е. имею примерно следующее 005C15AE E8 E96BE4FF CALL KNA4Repo.0040819C ; JMP to USER32.SetRectEmpty что с этим мне делать? знаете, такое у меня ощущение что у меня процесс неправильно распаковался... |
|
Создано: 05 января 2006 19:41 · Личное сообщение · #13 dragon пишет: убрать этот code splicing полностью тоесть оригинал ? это врятли, разве что анализатор писать чтоб из мусора восстанавливать оригинальные байты и потом пихать их на место... я не смотрел особо, но вроде они так и зашиты с мусором, а не разбавляются им при выполнение. А вообще кодесплитинг прекрасно редиректится при выделении страницы под него. nobody пишет: но! в процессе нет не одного прямого вызова! т.е. имею примерно следующее 005C15AE E8 E96BE4FF CALL KNA4Repo.0040819C ; JMP to USER32.SetRectEmpty это и есть обычный вызов апи. PS это первая прога которую ты распаковываешь чтоли ? =) |
|
Создано: 05 января 2006 19:59 · Личное сообщение · #14 Mario555 пишет: PS это первая прога которую ты распаковываешь чтоли ? =) почти вторая до этого была прога с ASPack v2.12 Caspr 4ever)) Mario555 пишет: это и есть обычный вызов апи. Знаешь, в туториалах всё так красиво: "прямой вызов АПИ в дизассемблере, тут же по дампу этого адреса название самой АПИ. осталось только прокрутить на верх и найти участок откуда таблица импорта начинается" красота... а вот у меня такого нет, и в дампе кроме крякозяблей ничего интересного))) поэтому и попросил тебя, как более опытного, взглянуть, может вообще мне "другой дорогой" надо идти |
|
Создано: 05 января 2006 20:23 · Личное сообщение · #15 |
|
Создано: 05 января 2006 21:22 · Личное сообщение · #16 Mario555 Просто кто-то мне сказал что мусора поначалу нет и можно восстановить оригинал, значит мне наврали или в это было в старой версии. Mario555 пишет: я не смотрел особо, но вроде они так и зашиты с мусором, а не разбавляются им при выполнение. А вообще кодесплитинг прекрасно редиректится при выделении страницы под него. Помню я этот полиморф, несколько мусорных инструкций, типа двухкратных bswap, ещё что-то, а также заменяются оригинальные инструкции. В общем таких конструкций не больше 10, плагин для иды можно легко написать, чтоб получить такую же секцию кода как и была. Просто например я не считаю полностью распакованных экзешник, если код не восстановлен в оригинале, а тем более оставлен в таком виде, копаться в нём противно |
|
Создано: 05 января 2006 22:28 · Личное сообщение · #17 вот ещё одна проблема не получается найти мэджик джамп попытка перейти на "начало ИАТ" приводит к сообщению "No memory on the specified address" адрес начала ИАТ находил примерно как в туторе, т.е. нахожу в приатаченном процессе что-нибудь похожее на следующее: 0048AD48 8B40 30 MOV EAX,DWORD PTR DS:[EAX+30] 0048AD4B 50 PUSH EAX 0048AD4C E8 ABD2F7FF CALL KNA4Repo.00407FFC ; JMP to USER32.IsIconic 0048AD51 85C0 TEST EAX,EAX 0048AD53 0F85 0C010000 JNZ KNA4Repo.0048AE65 0048AD59 E8 0ED1F7FF CALL KNA4Repo.00407E6C ; JMP to USER32.GetFocus 0048AD5E 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] 0048AD61 3B42 30 CMP EAX,DWORD PTR DS:[EDX+30] делаю Follow на строке 0048AD4C E8 ABD2F7FF CALL KNA4Repo.00407FFC ; JMP to USER32.IsIconic в дизассемблере появляется примерно следующее: 00407FEA 8BC0 MOV EAX,EAX 00407FEC - FF25 80D70001 JMP DWORD PTR DS:[100D780] ; USER32.IsClipboardFormatAvailable 00407FF2 8BC0 MOV EAX,EAX 00407FF4 - FF25 5CDF0001 JMP DWORD PTR DS:[100DF5C] ; USER32.IsDialogMessageA 00407FFA 8BC0 MOV EAX,EAX 00407FFC - FF25 F8DC0001 JMP DWORD PTR DS:[100DCF8] ; USER32.IsIconic 00408002 8BC0 MOV EAX,EAX 00408004 - FF25 5CD50001 JMP DWORD PTR DS:[100D55C] ; USER32.IsRectEmpty на любом джампе делаю Follow in Dump -> Memory Address ищу начало таблицы и её конец. получил Start IAT:0100D500 End IAT:0100DFDC в туторе надо было поставить hardware бряк на запись на начало ИАТ, но туда перейти не получается из-за описанной выше ошибки... |
|
Создано: 05 января 2006 22:35 · Личное сообщение · #18 |
|
Создано: 06 января 2006 14:42 · Личное сообщение · #19 |
|
Создано: 06 января 2006 14:52 · Личное сообщение · #20 |
|
Создано: 06 января 2006 15:14 · Личное сообщение · #21 Посмотрю только быстро не обещаю, дела есть.. Я арму по другому снимаю, айсом. Например OEP находится после простого просмотра дампа security.dll за пару минут, debugger blocker - это просто вызов OpenServiceA, бряк на него, исправляешь имя сервиса и всё. Для импорта я подправил dll какого-то дампера, ему IAT указываешь, он теперь импорт восстанавливает без всяких скриптов. А вот наномиты и этот самый code splicing посложнее кажуться. |
|
Создано: 06 января 2006 15:48 · Личное сообщение · #22 |
|
Создано: 07 января 2006 13:22 · Личное сообщение · #23 |
|
Создано: 07 января 2006 16:16 · Личное сообщение · #24 nobody пишет: Mario555, извини, но у меня есть такое чувство, что в моем случае твой скрипт находит енкриптор не верно... ну может и непрально, я сам им мало пользовался т.к. Mario555 пишет: но по понятным причинам на новых армах он ненужен... PS кста проверить правильность очень просто - сдампить секцию кода второго процесса и посмотерть восстановлена она или нет. PPS ессно для работы этого скрипта надо отлючать реакцию олли на все эксепшены. |
|
Создано: 07 января 2006 16:50 · Личное сообщение · #25 Mario555 пишет: PS кста проверить правильность очень просто - сдампить секцию кода второго процесса и посмотерть восстановлена она или нет. а как определить точно ли она восстановлена? попробовать запустить имеешь ввиду? кстати, у меня там мусорных кодов вообще полно! где-то читал что надо удалять куски кода pushad ... popad но их вроде там не мало, и советуют использовать плагин DeJunk. где можно качнуть? |
|
Создано: 15 января 2006 17:43 · Личное сообщение · #26 существуют ли какие-нибудь "свежие" туторы по распаковке армы на руском языке? сайт эстета не предлагать я сейчас застрял на шаге 3.PATCH MAGIC JUMP -DETACH FATHER (1st step) -Attach child -Patch EP return -Set bp memory on write at begin IAT начала таблицы(0100D450) в памяти ещё нету, соответственно и бряк на него не поставить... может есть другой способ восстановить ИАТ? и в чём вообще заключается патч мэджик джампа? |
|
Создано: 15 января 2006 18:40 · Личное сообщение · #27 |
|
Создано: 15 января 2006 20:41 · Личное сообщение · #28 nobody пишет: в чём вообще заключается патч мэджик джампа? Это чтобы в таблице импортов переходников не было, а только правильные адреса. Я начал распаковывать copymem убрал как и раньше, а вот прогу свою для восстановления IAT потерял А заново влом её делать. И вообще не советую по этим туторам распаковывать, imho туповатые они какие-то |
|
Создано: 15 января 2006 21:41 · Личное сообщение · #29 |
|
Создано: 15 января 2006 21:45 · Личное сообщение · #30 dragon млин... на форуме кроме тебя отказались помогать, а сам я как видно не особо разбираюсь в этом деле... не могу понять что можно сделать имея адрес magic jump'a! и надоели уже советы типа "поизучай статьи", "забей на это дело", "рано тебе ещё..." ну нету нормальных статей на русском(всё самое интересное на немецком)!!! а статья про лидию уже порядком постарела! и не могу я забить раз уже начал, к тому же это надо мне и ещё паре сотен людей! но из-за особенностей распространения проги, выложить её не могу, поэтому и прошу уже проверенных людей хотя бы взглянуть и подсказать что надо делать и в каком направлении двигаться... |
. 1 . 2 . 3 . >> |
eXeL@B —› Протекторы —› проблема с армой |