![]() |
eXeL@B —› Оффтоп —› VMProtect… |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 21 апреля 2007 19:51 · Личное сообщение · #1 Товарищем dermatolog было предложено лично(!), создать топик для побайтного разбора на CRACKLAB.RU его ВМ (чисто ради интеллектуально-спортивного интереса, сталобыть партия в шахматы, где проигравших нет) Топик расписан в такой манере, для того чтобы снять комплекс (с тех, кто неуверен, что это возможно сделать(себя тоже сюда приплюсую)) С чем предстоит столкнуться (быстрый предварительный анализ) много кода в открытом виде, хм… вполне возможен копипаст ![]() шелкод неюзается, разочаровало, но нам опять +1 мусор в ВМ незначительный, сталобыть значит, его вообще нет, еще в нашу копилку +1 пермутатора/мутатора не заметил, но кто знает, может гений инженерной мысли, нам это предоставил на закуску, еще, но уже такой ?1 проверка на бряк сисфунок (первый байт 0CCh) в открытом виде, -1 VMProtect импорт вроде неизгажен - ИМХО (быстрый предварительный анализ показал - что в теле ВМ переходник спрятан в открытом виде) предстоит разобрать 48 фунок, пропарсить внутренний стек (уж очень активно юзаеццо), сделать несколько таблиц и т. д. написать статью как мне кажется это глупо, а сталобыть не реально и подсилу только нескольким людям (а попробовать всем хоццо) – ИМХО (в принципе это уже можно считать как защиту) поэтому был создан топик для неограниченного числа людей, кто захочет понять, как это работает, ну и сталобыть кто самостоятельно нароет что-нибудь интересное, сможет здесь написать и объяснить подробно об этом, для того чтобы другие уже не изучали/анализировали этот участок кода, еще +1 что потребуеццо знание ASM (средние), желательно еще несколько доп. ЯВУ умение вступать и компилировать(обязательно) сам срякмикс (сорри не удержался) скачать его можно в той теме (его мы и будем подробненько разбирать) – (комментарий) у меня сложилось впечатление, что полностью весь рабочий код прожки был покрыт VMProtect(ИМХО), но нас это не остановит… мой плагин (без него никак - ИМХО), чтобы избавиться от статик/~динамик анализа свободное время и большое желание (времени очень много, но вот свободного как всегда ну очень мало) цель восстановить оригинальный код, если потребуется перекомпилировать… !!!WARNING!!! людей страдающих головокружением просьба не беспокоиться (за смерть головой-апстол ответственности не несем) Посты с двумя словами не приветствуюцца Пока будем пытаться победить танк… палками и камнями в тазике, но кто знает, что можно найти на своем пути ради победы ;) Всем нам свойственно ошибаться, но методом проб и ошибок, сталобыть методом тыка, всегда можно добиться положительного результата… Если кто за, прошу отписаться здесь... P. S. Если да, то завтра начну первый слив инфы, которую нарыл, не супер, но кое-что имеецца (мегакультных-крЭкеров просьба не обращать на наш скромный топик никакого внимания, ну и сталобыть для себя нового ВЫ ничего не найдете…) (все это для чайнЕка(такого как я), ну и для тех, кто просто горит/загорится желанием разобрать VMProtect) Здесь приветствуется инфа от знающих людей, хотелось бы обсуждать эту ВМ в форме полностью доступной для новичков (если что где непонятно и хотелось бы подробнее, спрашивайте, такие вопросы(без них стопудофф никак) приветствуюццо, но про поиск по сайту и т. д. не забывайте…) Пссс Я не крЭкер – не ломаю ничего… Я кодер – создатель & рипер – собиратель душ (для коллекции) заюзав поиск по сайту, я заметил, что тех, кто поднимают руку на VMProtect, принижают незаслуженно, значит надо восстановить равновесие PP. S. Если все получиться и топик большинству понравиться, будет создан другой для разбора следующей ВМ, нет(!), делов-то, закрою и все… Не будет желающих(!) тоже закрою… Не спорю, всегда было трудно поднимать темы про разбор любого ВМ, но, а вдруг получиться? Надеюсь, что все это не сочтут за флуд… ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 21 апреля 2007 20:21 · Личное сообщение · #2 |
|
Создано: 21 апреля 2007 21:58 · Поправил: sniperZ · Личное сообщение · #3 |
|
Создано: 21 апреля 2007 23:08 · Личное сообщение · #4 sniperZ пишет: усцыкается Кхе… в чем это выражается, ну или объясните ни разу неграмотному, в чем прикол-то? По тесту я не заметил этого… Ну и мне стало интересно то, что он предложил, тогда что это было, развод чтоле? sniperZ А ты лично смотрел тот тест, который он залил в тот топег? P. S. Меня лично интересует разобрать то, что в аттаче, ну и понять, как это было сделано, ничего сверхъестественного я там не увидел, но вот загорелся и все тут… Меня лично всегда интересовали трюки со стеком и раздачей пасов через один RET(жаль, что он не в теле пермутатора и неюзается шелкод), но все равно для моего плуга это тоже полезно в плане его развития, ведь я его и делаю для разборов ВМ (насколько хорошо у меня это получается, хз.), чтобы потом не напрягаццо… Мне пох, я потом возьму реальную прогу (если такую вообще возможно будет найти) покрытую VMProtect в чистом виде, ну и сравню, мне вот просто интересно в таблице адресов фунок, которые он под RET подсовывает, функи будут в томже порядке или нет… ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 21 апреля 2007 23:24 · Личное сообщение · #5 |
|
Создано: 22 апреля 2007 10:33 · Личное сообщение · #6 |
|
Создано: 22 апреля 2007 11:40 · Личное сообщение · #7 Хм, я пока начал с минимума защиты, дабы облегчить анализ вм.. Свой код вида: push 0
я узнать смог без особых трудностей.. теперь надо код по нарастанию - с более изощренными "конструкциями",сехами и call-ами, смотреть =) ----- Тут не могла быть ваша реклама ![]() |
|
Создано: 22 апреля 2007 11:56 · Личное сообщение · #8 Мы имеем EP вот с таким началом: 00401196 PUSH C75D1B25\эта “шифрованная” константа внутреннего EIP в ВМ 0040119B CALL 004080D6 \ основа всех начал 004011A0 XCHG AL,DL 004011A2 SHL AL,1 004011A4 AAM 7D 004011A6 BTC AX,SI 004011AA MOV EAX,DWORD PTR SS:[EBP] 004011AD BTS DX,9 004011B2 SHL DL,CL 004011B4 BSWAP DX 004011B7 DEC EDX 004011B8 MOV EDX,DWORD PTR SS:[EBP+4] 004011BB CMC 004011BC CMC 004011BD BT SI,DX 004011C1 ADD EBP,8 004011C4 PUSHFD 004011C5 MOV DWORD PTR FS:[EAX],EDX 004011C8 PUSHFD 004011C9 PUSH DWORD PTR SS:[ESP] 004011CC PUSH 3FAA7DA7 004011D1 PUSHAD 004011D2 LEA ESP,DWORD PTR SS:[ESP+30] 004011D6 JMP 00401177 \вот этот джамп играет не последнюю роль и будет помогать (по крайней мере, мне) хорошо, ориентироваться в ВМ Лирическое отступление от темы (критика) – Дакучи, мне GUI демо вообще не понравилось, как-то непрофессионально сделано, можно было хотябы получше компоненты заюзать…- ИМХО Я бы не стал никогда писать об этом мусоре, но вот автор прота видимо считает, что это является каким-то препятствием для анализа кода Пример этого мусора (только часть), игры со стеком я опустил (вообще это банально скучно и неинтересно) 00401BE5 MOV DWORD PTR SS:[ESP+4],ESI 00401BE9 LEA ESI,DWORD PTR DS:[EDX+7057E843] 00401BEF NOT ESI 00401BF6 BSWAP SI 00401BFD RCL ESI,13 00401C00 MOV SI,DI 0040781D INC SI 0040782A RCL ESI,CL 00408157 ADC ESI,EDX 0040815E SHRD SI,DX,0C Как я обошел этот мусор, не напрягая моск, да все просто я сделал запись в лог до “волшебного” RET`а, открыл его в EmEditor и сделал поиск вот этого C75D1B25 и сразу попал на то место где самое интересное начинается 00408167 MOV ESI,DWORD PTR SS:[ESP+2C] ESI=C75D1B25 Константа C75D1B25 преобразуется следующим алго \ я убрал лишний код, для того чтобы не мозолил глаза и было легче для понимания 00408167 MOV ESI,DWORD PTR SS:[ESP+2C] \ вот поэтому адресу в стеке мы эту константу получаем и кладем в регистр ESI ESI=C75D1B25 \ на входе 00408170 XOR ESI,0EB7C5F5 ESI=C9EADED0 0040817D BSWAP ESI ESI=D0DEEAC9 0040818B ADD ESI,2EDE9D3C ESI=FFBD8805 00408199 NOT ESI ESI=004277FA \ на выходе после преобразования 004277FA – это указатель на байт-код самой ВМ, этот сам байт-код индекс (смещение в таблице) указывающий на адреса, которые отвечают за последовательность выполнения кода BM В тоже время является внутренним EIP в BM Преобразование осуществляется по следующему алгоритму ESI – в ВМ это тоже самое что для процессора EIP 004081DE MOV EBX,ESI\ в память (см. чуть ниже) EBX=004277FA 0040117E MOV AL,BYTE PTR DS:[ESI]\здесь получаем байт-код для декрипто, стало быть, начало самого кода ВМ EAX=000000C4 00401180 JMP 00401257 0040125B SUB AL,BL\ вот тут я не понял для чего это нужно, но походу это часть поверки так называемой проверка целостности кода ВМ, потому что в EBX ложиться адрес ESI (EIP ВМ) EAX=000000CA 00401265 ROR AL,4 EAX=000000AC 0040126A CALL 0040709F 0040709F ADD AL,14 EAX=000000C0 004070A6 ROL AL,7 EAX=00000060 004070AF NEG AL EAX=000000A0 004070B1 CALL 00407349 0040734E INC ESI \ инкрементирует EIP ВМ ESI=004277FB 0040735A DEC AL EAX=0000009F 00407366 MOVZX EAX,AL \ здесь получаем чистый индекс в таблице EAX=0000009F \ (байт-код ВМ) 00407369 CALL 004010ED 004010ED JMP 004070E9 004070E9 MOV BYTE PTR SS:[ESP+4],90 Stack SS:[0012FE88]=12\это похоже на мусор, пока просто оставил, чтобы понятнее было 004070EE MOV BYTE PTR SS:[ESP+4],0C7 Stack SS:[0012FE88]=90\это похоже на мусор, пока просто оставил, чтобы понятнее было 004070F3 PUSH DWORD PTR DS:[EAX*4+4079D2] DS:[00407C4E]=004087C8 (Project1.004087C8) \ здесь применяется этот индекс 004070FA POP DWORD PTR SS:[ESP+4C] Stack SS:[0012FECC]=00000282\ здесь записывается адрес функи интерпретатора ВМ 004070FE PUSH 7B1D8CDB \это похоже на мусор, пока просто оставил, чтобы понятнее было 00407103 MOV BYTE PTR SS:[ESP],CL Stack SS:[0012FE80]=DB\это похоже на мусор, пока просто оставил, чтобы понятнее было 00407106 MOV BYTE PTR SS:[ESP+4],0D2 Stack SS:[0012FE84]=6E ('n') \это похоже на мусор, пока просто оставил, чтобы понятнее было 0040710B MOV WORD PTR SS:[ESP],73F8 Stack SS:[0012FE80]=8CB0\это похоже на мусор, пока просто оставил, чтобы понятнее было 00407111 PUSH DWORD PTR SS:[ESP+50] Stack SS:[0012FED0]=004087C8 (Project1.004087C8) \ здесь ложиться в стек для RET`а адрес функи интерпретатора ВМ 00407115 RETN 54 \ здесь запускается адрес функи интерпретатора ВМ, так сказать сердце ВМ – ИМХО (дальше может мнение мое поменяццо) Бряк на этот RET (весь байт-код ВМ проходит через него) и в результате будет в EAX индекс, а на вершине стека адрес функи которая запуститься, остается их разобрать для чего каждая нужна (но, эти функи между собой связаны через внутренний стек ВМ (во бля, головоломка, весь к этому относящийся код размазан по ВМ просто ппц какой-то) указатель на который находиться в регистре EDI (забегая вперед, через него осуществляется некоторые проверки)) Вообще мне весь этот механизм с RET напоминает ExeCryptor, только там по такому принципу реализована простая, банальная раскриптовка кода - ИМХО По адресу 4079D2 – находиться начало таблицы фунок виртуализера Длина равна 03FC, стало быть (FF*4) Конец значит 407DCE Всего получается 255, меня, если честно поначалу это напугало, подумал нех**ясе это чёёё 255 фунок предстоит разобрать, решил я это дело проверить Заодно первую примитивную таблицу составить (см. следующий пост) ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 22 апреля 2007 11:58 · Личное сообщение · #9 Первая колонка Индекс, который получается на “волшебном” RET`е Вторая колонка Адреса в памяти, где находятся указатели на начало фунок Третья колонка начальные адреса самих фунок Четвертая колонка Это индекс порядкового номера самих фунок, так как их всего 48, а не 255(было бы куда более интереснее), на мой взгляд, это будет более понятно (об этом позже) Пятая колонка Просто смещение во внутреннем стеке (через эти смещения спрятано все самое интересное) подробнее об этом позже ;) Таблица: 00 004079D2 004087C8 \00 01 004079D6 00401074 \01 (08) 02 004079DA 00401074 \01 (28) 03 004079DE 0040749F \02 04 004079E2 00408754 \03 05 004079E6 00401FE5 \04 06 004079EA 004080AC \05 07 004079EE 0040751F \06 08 004079F2 00401047 \07 09 004079F6 0040874F \08 0A 004079FA 00401105 \09 0B 004079FE 0040873A \0A 0C 00407A02 00407FFC \0B 0D 00407A06 004012AA \0C 0E 00407A0A 0040888A \0D 0F 00407A0E 004081F8 \0E 10 00407A12 00401B57 \0F 11 00407A16 00408812 \10 12 00407A1A 00408359 \11 13 00407A1E 00401B91 \12 14 00407A22 004078E3 \13 15 00407A26 004011A0 \14 16 00407A2A 004012AA \0C 17 00407A2E 0040825E \15 18 00407A32 0040825E \15 19 00407A36 0040873A \0A 1A 00407A3A 00408555 \16 1B 00407A3E 0040874F \08 1C 00407A42 004074F0 \17 1D 00407A46 00407FE9 \18 1E 00407A4A 004086B6 \19 1F 00407A4E 004087C8 \00 20 00407A52 004087C8 \00 21 00407A56 00401074 \01 (0C) 22 00407A5A 00401074 \01 (2C) 23 00407A5E 004082C4 \1A 24 00407A62 004078E3 \13 25 00407A66 00401047 \07 26 00407A6A 004079B3 \1B 27 00407A6E 004081F8 \0E 28 00407A72 0040102A \1C 29 00407A76 00407FFC \1D 2A 00407A7A 00402061 \1E 2B 00407A7E 00401047 \07 2C 00407A82 00407597 \1F 2D 00407A86 004082C4 \1A 2E 00407A8A 0040828E \20 2F 00407A8E 004084E6 \21 30 00407A92 00403485 \22 31 00407A96 004080AC \05 32 00407A9A 00401047 \07 33 00407A9E 004082C4 \1A 34 00407AA2 004085CA \23 35 00407AA6 00402061 \1E 36 00407AAA 0040873A \0A 37 00407AAE 0040749F \02 38 00407AB2 0040737B \24 39 00407AB6 004079B3 \1B 3A 00407ABA 00407732 \25 3B 00407ABE 00407732 \25 3C 00407AC2 00407FE9 \18 3D 00407AC6 00407732 \25 3E 00407ACA 00401FE5 \04 3F 00407ACE 004087C8 \00 40 00407AD2 004087C8 \00 41 00407AD6 00401074 \01 (00) 42 00407ADA 00401074 \01 (20) 43 00407ADE 00407962 \26 44 00407AE2 0040126F \27 45 00407AE6 0040126F \27 46 00407AEA 00401BBC \28 47 00407AEE 004073FA \29 48 00407AF2 0040126F \27 49 00407AF6 00401105 \09 4A 00407AFA 00408555 \16 4B 00407AFE 00408812 \10 4C 00407B02 00407962 \26 4D 00407B06 00407597 \1F 4E 00407B0A 004078E3 \13 4F 00407B0E 004083E7 \2A 50 00407B12 00401FE5 \04 51 00407B16 00401047 \07 52 00407B1A 004073FA \29 53 00407B1E 0040751F \06 54 00407B22 0040825E \15 55 00407B26 00401B57 \0F 56 00407B2A 0040211B \2B 57 00407B2E 0040126F \27 58 00407B32 0040102A \1C 59 00407B36 00401B57 \0F 5A 00407B3A 00401297 \2C 5B 00407B3E 004073FA \29 5C 00407B42 004075F0 \2D 5D 00407B46 004081F8 \0E 5E 00407B4A 004084E6 \21 5F 00407B4E 004087C8 \00 60 00407B52 004087C8 \00 61 00407B56 00401074 \01 (04) 62 00407B5A 00401074 \01 (24) 63 00407B5E 0040749F \02 64 00407B62 0040126F \27 65 00407B66 004073FA \29 66 00407B6A 0040828E \20 67 00407B6E 004080AC \05 68 00407B72 004081F8 \0E 69 00407B76 00401B91 \12 6A 00407B7A 00407597 \1F 6B 00407B7E 00408754 \03 6C 00407B82 004083E7 \2A 6D 00407B86 0040828E \20 6E 00407B8A 0040874F \08 6F 00407B8E 00407732 \25 70 00407B92 00401B91 \12 71 00407B96 0040126F \27 72 00407B9A 0040737B \24 73 00407B9E 004011A0 \14 74 00407BA2 00401105 \09 75 00407BA6 004082C4 \1A 76 00407BAA 004074F0 \17 77 00407BAE 00407FFC \1D 78 00407BB2 004073FA \29 79 00407BB6 004011DB \2E 7A 00407BBA 0040888A \0D 7B 00407BBE 00407FFC \1D 7C 00407BC2 0040211B \2B 7D 00407BC6 0040828E \20 7E 00407BCA 004082C4 \1A 7F 00407BCE 004087C8 \00 80 00407BD2 00401074 \01 (18) 81 00407BD6 00401074 \01 (38) 82 00407BDA 0040749F \02 83 00407BDE 0040126F \27 84 00407BE2 004073FA \29 85 00407BE6 00401047 \07 86 00407BEA 00407FE9 \18 87 00407BEE 004083E7 \2A 88 00407BF2 0040874F \08 89 00407BF6 004075F0 \2D 8A 00407BFA 0040828E \20 8B 00407BFE 0040825E \15 8C 00407C02 0040751F \06 8D 00407C06 004080AC \05 8E 00407C0A 00401297 \2C 8F 00407C0E 004084E6 \21 90 00407C12 004081F8 \0E 91 00407C16 004082C4 \1A 92 00407C1A 00402061 \1E 93 00407C1E 004073FA \29 94 00407C22 00408359 \11 95 00407C26 004082C4 \1A 96 00407C2A 004082C4 \1A 97 00407C2E 00408754 \03 98 00407C32 00407597 \1F 99 00407C36 0040102A \1C 9A 00407C3A 00407962 \26 9B 00407C3E 0040102A \1C 9C 00407C42 004084E6 \21 9D 00407C46 004086DC \2F 9E 00407C4A 004087C8 \00 9F 00407C4E 004087C8 \00 A0 00407C52 00401074 \01 (1C) A1 00407C56 00401074 \01 (3C) A2 00407C5A 004082C4 \1A A3 00407C5E 00401047 \07 A4 00407C62 0040874F \08 A5 00407C66 00407597 \1F A6 00407C6A 004081F8 \0E A7 00407C6E 0040126F \27 A8 00407C72 00408754 \03 A9 00407C76 0040102A \1C AA 00407C7A 004075F0 \2D AB 00407C7E 0040749F \02 AC 00407C82 004078E3 \13 AD 00407C86 00407FE9 \18 AE 00407C8A 0040211B \2B AF 00407C8E 00401B57 \0F B0 00407C92 004011A0 \14 B1 00407C96 00401B91 \12 B2 00407C9A 00401B91 \12 B3 00407C9E 0040873A \0A B4 00407CA2 0040737B \24 B5 00407CA6 00407962 \26 B6 00407CAA 0040102A \1C B7 00407CAE 00401B91 \12 B8 00407CB2 00401FE5 \04 B9 00407CB6 0040737B \24 BA 00407CBA 00403485 \22 BB 00407CBE 00401B57 \0F BC 00407CC2 004086DC \2F BD 00407CC6 0040126F \27 BE 00407CCA 004087C8 \00 BF 00407CCE 004087C8 \00 C0 00407CD2 00401074 \01 (10) C1 00407CD6 00401074 \01 (30) C2 00407CDA 0040349F \30 C3 00407CDE 00408555 \16 C4 00407CE2 004086B6 \19 C5 00407CE6 0040874F \08 C6 00407CEA 0040751F \06 C7 00407CEE 004073FA \29 C8 00407CF2 0040211B \2B C9 00407CF6 00402061 \1E CA 00407CFA 00401297 \2C CB 00407CFE 00401B91 \12 CC 00407D02 00401297 \2C CD 00407D06 0040349F \30 CE 00407D0A 00401B57 \0F CF 00407D0E 00401FE5 \04 D0 00407D12 00401BBC \28 D1 00407D16 004085CA \23 D2 00407D1A 00407962 \26 D3 00407D1E 00403485 \22 D4 00407D22 00408754 \03 D5 00407D26 00403485 \22 D6 00407D2A 00401B57 \0F D7 00407D2E 00407732 \25 D8 00407D32 004086DC \2F D9 00407D36 00401FE5 \04 DA 00407D3A 004011A0 \14 DB 00407D3E 004073FA \29 DC 00407D42 00401BBC \28 DD 00407D46 00407FFC \1D DE 00407D4A 004087C8 \00 DF 00407D4E 004087C8 \00 E0 00407D52 00401074 \01 (14) E1 00407D56 00401074 \01 (34) E2 00407D5A 0040126F \27 E3 00407D5E 0040825E \15 E4 00407D62 0040126F \27 E5 00407D66 0040825E \15 E6 00407D6A 004082C4 \1A E7 00407D6E 00401B91 \12 E8 00407D72 00407597 \1F E9 00407D76 00408359 \11 EA 00407D7A 0040749F \02 EB 00407D7E 00401B91 \12 EC 00407D82 004011A0 \14 ED 00407D86 00407FE9 \18 EE 00407D8A 004075F0 \2D EF 00407D8E 0040211B \2B F0 00407D92 004079B3 \1B F1 00407D96 00408754 \03 F2 00407D9A 00407FE9 \18 F3 00407D9E 00408812 \10 F4 00407DA2 004086B6 \19 F5 00407DA6 00407962 \26 F6 00407DAA 00407FE9 \18 F7 00407DAE 004011A0 \14 F8 00407DB2 004083E7 \2A F9 00407DB6 00401297 \2C FA 00407DBA 004086DC \2F FB 00407DBE 004085CA \23 FC 00407DC2 00403485 \22 FD 00407DC6 00407597 \1F FE 00407DCA 004087C8 \00 FF 00407DCE 004087C8 \00 Вот в этот примитивный механизм были спрятаны некоторые проверки, переходники на оригинальный код программы, некоторые сисфунки (“их адреса из IAT”) Далее придется описывать весь апгрЭйд, который был навешен на основной двиг и играет не последнюю роль в протее, но это уже (я продолжу свои исследования) завтра или после завтра (все зависит от обстоятельств и времени) На насмешки и прочее я внимания обращать не буду… то, что я здесь написал, это не значит, что я не знаю чего-то больше, просто пишу, чтобы было понятно, любому кто первый раз увидит этот прот… Если кто наставит в правильное русло, буду рад, я читал очень мало статей и вполне возможно то, что я написал, понятно сразу не станет, но если возникают где-то вопросы, спрашивайте, я постараюсь подробно ответить… Да и так гораздо интереснее я думаю, будет… ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 22 апреля 2007 12:01 · Поправил: lord_Phoenix · Личное сообщение · #10 |
|
Создано: 23 апреля 2007 02:48 · Личное сообщение · #11 Поковыряв его сейчас немного, наткнулся на функу под индексом C9 (для чего она нужна, от комментариев пока воздержусь) Но сразу появилась, мысля написать декомпиль, но существует золотое правило – поюзать поиск, что я и сделал… Естественно я понимаю, что он должен быть приватным по нескольким причинам… но, хотелось просто узнать, заявлял ли кто-нибудь о существовании такого на паблике… Поиск дальше CRACKLAB никуда не увел, да я и не особо его напрягал… В связи с этим появился ряд вопросов (может, кто знает на них ответы) При компиляции защищаемой проги, интерпретатор самой ВМ видоизменяется каждый раз заново(мутаген) или он остается неизменным? (смещение по адресам, байт-код и прочее подобное естественно не имееццо ввиду) PE_Kill пишет: Вряд ли, кто то будит писать. Там нужен декомпиль, и тот, кто его написал 100% не будет расписывать на 500 страниц логику VM, при том, что это нафиг никому не надо. Никто это потом анализировать не будет, а будут постоянные просьбы к автору дать декомпиль. PE_Kill Просто хотел узнать, ты при предварительном анализе такие выводы сделал и не стал его дальше смотреть, так как это по логике вещей не имеет вообще смысла или все-таки более подробно разбирал какую-нибудь прогу покрытую протом? И вообще что думаешь про сабж, смысл топику существовать, если никто отписываться не хочет(???) (я имею в виду, смысл мне его одному ковырять, я и так знаю что его уделаю, мне легче конечно было(в моральном плане) ковырять сам фулпрот, а не этот тест (мля, аж смешно))… PE_Kill пишет: при том, что это нафиг никому не надо. ![]() (нет комментариев и тишина как на кладбище) Выводы хоть какие-нибудь, нужно это кому-нибудь(?), а то может, поковыряли чуть да бросили? ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 23 апреля 2007 04:13 · Личное сообщение · #12 |
|
Создано: 23 апреля 2007 06:14 · Личное сообщение · #13 |
|
Создано: 23 апреля 2007 14:07 · Личное сообщение · #14 Посчитал своим долгом написать все что ниже, для того чтобы другие не парились… Так сразу скажу, фунок 48, но считать их надо как будто их 255, то есть от 0 до FF Сейчас я постараюсь описать схему НА ПРИМЕРЕ получения адреса импорта одной сисфунки GetVersion (комментарий) - Мля, скокож надо было париться, чтобы придумать, а сталобыть реализовать такое, ЛооооЛ и все это находиться и понимаеццо примерно за 7 минут…(хто быстрее? %)) – сейчас мы реально увидим, что это за такой за ЗВЕРЬ… (сорри не удержался, короче пост дольше писал) !!!Кто его уже ковырял, для себя нового вы ничего не прочитаете!!! (это для тех, кто еще ниразу его не видел) - То, что ВЫ прочитаете сейчас внизу, ВАС заставит плакатЪ, гарантирую!!!!... Начало, Байт-код 2A (далее это функа с ее очищенным индексом по таблице dermatolog`а) 0040117E MOV AL,BYTE PTR DS:[ESI] EAX=00000021 \ после преобразования Байт-код 2A (само алго преобразования заслужило отдельного обсуждения (походу именно это один из вариантов отличий демо от фул, и из-за этого походу придется писать деко…)) 0040734E INC ESI ESI=0043327A Далее идет четыре байта, и получаются они вот так 0040206D MOV EAX,DWORD PTR DS:[ESI] EAX=9AAA8A33 \ это начало “зашифрованного” адреса сисфунки GetVersion 00408542 ADD ESI,4 ESI=0043327E \ незабываем, что это EIP ВМ 004087B9 XOR EAX,EBX EAX=A447464D 004087BD ADD EAX,D7154B0F EAX=7B5C915C 004071D1 NEG EAX EAX=84A36EA4 004071DA ADD EAX,BB9CB55C EAX=40402400 004071E7 ROR EAX,0A EAX=00101009 00408692 MOV DWORD PTR SS:[EBP],EAX \ здесь он записывается 00101009 Тут я пропускаю всякие неинтересные проверки, короче приколы… 0040104A MOV EAX,DWORD PTR SS:[EBP] EAX=00101009 \ ага вот отсюда поподробнее %) 00401051 MOV CL,BYTE PTR SS:[EBP+4] ECX=00000002 00408527 SUB EBP,2 EBP=0012FF40 0040852B SHL EAX,CL EAX=00404024 IMPORT "<&KERNEL32.GetVersion>" \ ву-аля и что мы видим %) 00402074 MOV DWORD PTR SS:[EBP+4],EAX \ здесь он записывается 00404024 Тут я пропускаю всякие неинтересные проверки, короче приколы… 0040785C MOV EAX,DWORD PTR SS:[EBP] EAX=00404024 IMPORT "<&KERNEL32.GetVersion>" 004086AB 8B00 MOV EAX,DWORD PTR DS:[EAX] EAX=7C8114AB IMPORT "kernel32.GetVersion" 00407118 MOV DWORD PTR SS:[EBP],EAX \ здесь он записывается 7C8114AB Тут я пропускаю всякие брачные игры, поверьте это надо просто видеть какие там перетасовки во внутреннем стеке ВМ… Проверка на “0CCh” 0040855E MOV EDX,DWORD PTR SS:[EBP] EDX=7C8114AB IMPORT "kernel32.GetVersion" 00407163 MOV AL,BYTE PTR DS:[EDX] EAX=00000064 Это просто начало после длительных преобразований, если оригинальный первый байт будет другим к оригинальному адресу прибавиться смещение и прожка из-за этого упадет Осуществляется это здесь: 00407524 MOV EAX,DWORD PTR SS:[EBP] EAX=00000000 004076D1 ADD DWORD PTR SS:[EBP+4],EAX Stack SS:[0012FF44]=7C8114AB (kernel32.GetVersion) Короче вот здесь он ее запустит опятьже через RET, но то, что там перед запуском сисфунки, ВПЕЧАТЛЯЕТ ПРОСТО ППЦ!!! 0040F6BB PUSH DWORD PTR SS:[ESP+38] Stack SS:[0012FF44]=7C8114AB (kernel32.GetVersion) 0040F6BF RETN 3C Вопрос, шо за монстр асилит написать такую статью про этот VMProtect, если это когда-то случиться(????...) ДАЙТЕ ЗНАТЬ %)))) P. S. В наш век с такими проццами… ситуация просто удручающая… сталобыть, истЕну я для себя нашел %)))… Всем спасибо за внимание… ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 23 апреля 2007 14:43 · Личное сообщение · #15 |
|
Создано: 23 апреля 2007 17:27 · Личное сообщение · #16 |
|
Создано: 23 апреля 2007 17:38 · Личное сообщение · #17 |
|
Создано: 23 апреля 2007 17:49 · Поправил: dermatolog · Личное сообщение · #18 ssx пишет: а где тот крякми что вы ковыряете? Начало распальцовок господина Demon666 здесь: http://exelab.ru/f/action=vthread&forum=7&topic=7355 Добавлено: Сыль на крякмикс тамже. ![]() |
|
Создано: 23 апреля 2007 19:22 · Личное сообщение · #19 Demon666 пишет: Вопрос, шо за монстр асилит написать такую статью про этот VMProtect, если это когда-то случиться(????...) ДАЙТЕ ЗНАТЬ %)))) Да ты, по-моему, слишком плохого мнения о здешнем народе. Это вопрос скорее времени, чем мозга, все ломаемо, просто больно муторно. [off(big_sorry)] dermatolog пишет: Мы уже неделю ждем от тебя взломанного крякмикса, а у тебя все еще дело дальше EP не ушло EP (даже не ОЕП) ![]() Извините, не удержался. [/off(big_sorry)] ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
|
Создано: 23 апреля 2007 19:45 · Поправил: lord_Phoenix · Личное сообщение · #20 |
|
Создано: 23 апреля 2007 20:22 · Личное сообщение · #21 lord_Phoenix пишет: Или помогай, или молчи У вас с головой все в порядке? Я чем вам интересно могу помочь - может исходники выложить? ![]() lord_Phoenix пишет: В след. раз получишь бан На подъебки я буду отвечать только подъебками. Оскорбления я теперь не буду нивкаком виде. Банить или нет - это ваше право. ![]() |
|
Создано: 23 апреля 2007 20:26 · Личное сообщение · #22 dermatolog пишет: У вас с головой все в порядке? Я чем вам интересно могу помочь - может исходники выложить? ) А у меня вообще головы нет. А исходникам будем только рады dermatolog пишет: На подъебки я буду отвечать только подъебками. Топик для "подъебок" был закрыт. Этот топик для исследований, к чему бы они не привели. ----- Тут не могла быть ваша реклама ![]() |
|
Создано: 23 апреля 2007 22:29 · Личное сообщение · #23 |
|
Создано: 24 апреля 2007 00:10 · Личное сообщение · #24 |
|
Создано: 24 апреля 2007 02:25 · Личное сообщение · #25 lord_Phoenix Да пусть пишет, че хочет (это и его топик тоже), я его прекрасно понимаю, о чем он… (просто просит, чтобы я не издевался больше над его интеллектуальными способностями, но(!), забыв при этом, что есть гораздо интереснее и оригинальнее личности из числа говнописателей защит…) dermatolog Не спорю насчет целостности кода ВМ, интересный подход в защите… Залей еще один такойже тест, скомпилированный еще раз, хочу на мутоген посмотреть и проанализировать его уровень… чич-то для плагина надо ![]() ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 24 апреля 2007 07:51 · Личное сообщение · #26 lord_Phoenix пишет: А у меня вообще головы нет. А исходникам будем только рады В очередной раз убеждаюсь, что у руля форума стоят бесбашенные модераторы. Печально. К действительно хорошим ресурсам в плане реверсинга в своё время можно было отнести ТОЛЬКО reversing.net (ныне reng.ru), на котором можно было задвать практически любой вопрос технического плана и практически всегда получить квалифицированный ответ (тоже самое и в плане обсуждения любых защит). А что мы видим здесь? Сплошной подонковский сленг, оскорбления и т.п. Вобщем детский сад. Demon666 пишет: Не спорю насчет целостности кода ВМ, интересный подход в защите… До самой защиты ты еще и не добрался. ![]() |
|
Создано: 24 апреля 2007 08:00 · Личное сообщение · #27 |
|
Создано: 24 апреля 2007 13:04 · Поправил: WoLFeR · Личное сообщение · #28 dermatolog пишет: Вобщем детский сад. Дык давно уже ![]() dermatolog пишет: В очередной раз убеждаюсь, что у руля форума стоят бесбашенные модераторы. Печально. Безбашеность это только + ![]() dermatolog залей плиз ещераз обработаный крякмис с идентичными опциями, самому интересно глянуть на отличия. П.С. 1)Хватит переходить на личности 2)Необоснованые понты это отстой ![]() ![]() |
|
Создано: 24 апреля 2007 17:57 · Личное сообщение · #29 lord_Phoenix Ага, сейчас только посмотрел демку и сравнил с фул Примитивные результаты: Это очищенный байт-код 10 по таблице dermatolog`а Вот так он выглядит в фул: 0040755C NOT AH 0040755E MOV EAX,DWORD PTR SS:[EBP] 00407561 PUSHFD 00407562 LEA ESP,DWORD PTR SS:[ESP+4] 00407566 JNS 004070B6 0040756C PUSH D39FCCAC 00407571 PUSHAD 00407572 MOV EAX,DWORD PTR SS:[EAX] 00407575 CALL 0040864F 0040864F MOV DWORD PTR SS:[EBP],EAX 00408652 MOV BYTE PTR SS:[ESP],AL 00408655 PUSHFD 00408656 LEA ESP,DWORD PTR SS:[ESP+2C] 0040865A JMP 00401177 А вот так в демо: 004566B4 MOV EAX,DWORD PTR SS:[EBP] 004566B7 MOV EAX,DWORD PTR SS:[EAX] 004566BA MOV DWORD PTR SS:[EBP],EAX 004566BD JMP 004560C9 Получается, что мы в верном направлении все делаем для разбора ВМ, вот только народу участвует в этом деле очень мало, ведь там ничего сложного нет… ![]() ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 24 апреля 2007 18:15 · Личное сообщение · #30 |
. 1 . 2 . 3 . >> |
![]() |
eXeL@B —› Оффтоп —› VMProtect… |