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

 eXeL@B —› Протекторы —› Распаковка AsProtect >1.23 - от А до Я.
<< . 1 . 2 . 3 . 4 . 5 . >>
Посл.ответ Сообщение

Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 18 августа 2005 11:56 · Поправил: nice
· Личное сообщение · #1

Эта тема по распаковке AsProtect'a последних версий, для надругательств выбрана программа: AlfaClock 1.82
сайт программы: www.alfasoftweb.com/rus/
прямая ссылка: www.alfasoftweb.com/rus/AlfaClock_rus.exe

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

За флейм будем наказывать!

Нашел ОЕР inferno_mteam
004C5444 55 PUSH EBP
004C5445 8BEC MOV EBP,ESP
004C5447 83C4 C0 ADD ESP,-40
004C544A 53 PUSH EBX
004C544B 33C0 XOR EAX,EAX
004C544D 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX
004C5450 8945 D0 MOV DWORD PTR SS:[EBP-30],EAX
В Ольке можно быстро попасть на ОЕР сл. образом, открываем программу, жмем Ctrl+G (перейти на строку) вбиваем туда ОЕР=04С5444, правой кнопкой мыши: Breakpoint->Hardware, on execution
после чего отключаем все Exceptions: menu->Options->Exceptions и ставим все галочки, .теперь нажите F9 и вы на ОЕР

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

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

Простите Какую прогу паспаковываем? Попробуйте так.
Проход до ОЕР: Для определения виртуального ОЕР всё делаем аналогично предыдущей версии аспра. После срабатывания бряка на секции CODE ОЕР по адресу ESP-8. Далее лучше всего рестарт D addrOEP в окне дампа. Когда, после очередного исключения ОЕР будет распаковано, то необходимо сразу переходить на него ипроизводить дальнейшие действия. Эти деиствия остановят счётчик.



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

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

nice
Для аспра 2.х можно дампить прямо на OEP, если она распологается в выделенной аспром памяти.
Про xor байт на OEP не вкурил
Насчет обнаружения места в ехе, где раньше лежала EP: не уверен вообще что это возможно, хотя для некоторых из run-time функций для дельфи прог эти самые функции вернуть назад можно, ибо куски из них остаются в exe, а остальная часть выкусывается аспром.



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

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

Это основная ветка. Видоизменяет два аспрокелла. 6 раз обращается к поге используя часть подпрограмм. Здесь и надо дампить, т. к прога распакована и аспрокелы не видоизменены. Затем в дампе восстановливать спёртые байты. И прикручивать их к последней секции проги. Но это очень долго. Надо искать как обмануть. Импорт восстанавливается аналогично.



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

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

SergSh пишет:
Видоизменяет два аспрокелла. 6 раз обращается к поге используя часть подпрограмм.

Извини, но что-то я не понял твою терминологию.
SergSh пишет:
Здесь и надо дампит
. А где здесь? Есть начало спертых байт - в выделенной области, есть переход
на секцию кода (1-я команда). Между ними - обращение к VM и выход и нее. Так где?
Кстати, ты дампером-плагином OllyDbg не пользуешься?



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

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

tar4
Дампить имможно, а вот импорт лучше ИмпрРеком прикручивать

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

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

inferno_mteam пишет:
Насчет обнаружения места в ехе, где раньше лежала EP: не уверен вообще что это возможно


Да запросто (если я правильно понял вопрос) просто поищи в секции кода jmp stolen_OEP_start



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

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

nice пишет:
nice

А может этот топик объединить с топиком "Сокрытие OEP в аспре 2.1" и заняться указанной в нем прогой?



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

Создано: 14 сентября 2005 10:23
· Личное сообщение · #9

sanniassin пишет:
просто поищи в секции кода jmp stolen_OEP_start

Что то я не очень понял, что такое stolen_OEP_start.



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

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

tar4
лучше, как уже предлагалось, поисследовать IconLover
http://exelab.ru/f/action=vthread&forum=1&topic=2830
во первых там не только 'сокрытие ОЕП', но есть VM, и AIP(вроде), вобщем аспр2 во всей красе)
во вторых эта реальная прога, а не анпакми, и в третьих мне надо ее заломать ))




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

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

А что, если в самом начале спёртых байт прямо на ОЕП прогу сдампить и сдампить все регионы выделенной памяти (через ПЕТулз, дамп регион), а потом все эти секции прицепить к ехе, способ крайне долгий и геморный, но может сработает? Ну и импорт потом конечно прикрутить. И прога распакованная, патчить вроде можно и должно работать в теории, хотя и геморно делать.




Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

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

Archer пишет:
рямо на ОЕП прогу сдампить и сдампить все регионы выделенной памяти

баян )))
в стриппере это уже _очень_ давно реализовано и вручную без проблем делалось, правда некрасиво это... для автоунпакера ещё нормально, а для ручной распаковки некрасиво.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 14 сентября 2005 21:12 · Поправил: Archer
· Личное сообщение · #13

Mario555
Да блин, хоть бы работало! Ну предложи получше способ. Я готов ехе хоть в 50 метров получить, лишь бы запахало на ура. Всё равно только для себя ковыряю.
Не, в смысле, я понимаю, что это хреново, но так даже ИАТ не надо будет восстанавливать. А патчить прогу вполне можно. Ламерский способ и долгий и нудный, но работать должно нормально.



Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

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

inferno_mteam пишет:
Что то я не очень понял, что такое stolen_OEP_start.

адрес начала спёртого с OEP кода



Ранг: 31.0 (посетитель), 1thx
Активность: 0.040
Статус: Участник

Создано: 15 сентября 2005 03:49 · Поправил: sanniassin
· Личное сообщение · #15

Mario555 пишет:
в стриппере это уже _очень_ давно реализовано и вручную без проблем делалось, правда некрасиво это... для автоунпакера ещё нормально, а для ручной распаковки некрасиво.

В стриппере 2.13 это уже fixed там VM удаляется, удаляются мусорные джампы и все спёртые куски лепятся в 1 секцию с нормальным RVA
Mario555 пишет:
для автоунпакера ещё нормально, а для ручной распаковки некрасиво.

Зато даже в аспре 2.2 катит метод, я там 20 метров дампил сразу и всё заработало (тока проверку на PID процесса пофиксить)



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

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

sanniassin пишет:
я там 20 метров дампил сразу

По-моему это не очень удобный способ. В следующей версии аспра этих секций будет более сотни и что тогда?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 15 сентября 2005 17:29
· Личное сообщение · #17

tar4
Ну вот тогда и будем думать. Других идей всё равно пока больше нет, ну кроме просмотра каждой команды руками и выбора нужных и ненужных.



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 16 сентября 2005 14:21 · Поправил: SergSh
· Личное сообщение · #18

Как не пытался я его обмануть, плюнул. На счёт спёртых байт мне кажется здесь этот термин не совсем подходит, т.к. речь идёт о эмеляции основной ветки. Поэтому я решил попробовать написать её. Пока мне это удаётся. Значит как обычно делаем проход, остановились на секции кода, восстановили импорт, сделали дамп ОЕР происали любое (проктически), прикрутили импорт к дампу. Напоминаю, что VOEP находится по адресу ESP-8.Теперь в последней секции аспра будем писать основную ветку. Примерно так:
/*7B1000*/ PUSH EBP
/*7B1001*/ MOV EBP,ESP
/*7B1003*/ ADD ESP,-10
/*7B1006*/ PUSH EBX
/*7B1007*/ PUSH ESI
/*7B1008*/ PUSH EDI
/*7B1009*/ XOR EAX,EAX
/*7B100B*/ MOV DWORD PTR SS:[EBP-10],EAX
/*7B100E*/ MOV EAX,ddd_.006B64E8 число циклов у меня получилось 10А
/*7B1013*/ CALL ddd_.007059AC
Обратите внимание на ddd_.006B64E8 по этому адресу должно находится колличество циклов
CALL EAX.
CALL ddd_.007059AC выглядит так:
/*7059AC*/ PUSH EAX
/*7059AD*/ PUSH 0
/*7059AF*/ CALL <JMP.&kernel32.GetModuleHandleA>
/*7059B4*/ MOV EDX,ddd_.006B7108
/*7059B9*/ PUSH EDX
/*7059BA*/ MOV DWORD PTR DS:[6D34DC],EAX
/*7059BF*/ NOP
/*7059C0*/ MOV DWORD PTR DS:[EDX+4],EAX
/*7059C3*/ MOV DWORD PTR DS:[EDX+8],0
/*7059CA*/ MOV DWORD PTR DS:[EDX+C],0
/*7059D1*/ CALL ddd_.0070595A
/*7059D6*/ POP EDX
/*7059D7*/ POP EAX
/*7059D8*/ CALL ddd_.0070289E
/*7059DD*/ RETN
CALL ddd_.0070595A выглядит так:
/*70595A*/ PUSH EBX
/*70595B*/ ADD ESP,-108
/*705961*/ PUSH 105
/*705966*/ LEA EAX,DWORD PTR SS:[ESP+4]
/*70596A*/ PUSH EAX
/*70596B*/ MOV EAX,DWORD PTR DS:[6D34DC]
/*705970*/ PUSH EAX
/*705971*/ CALL <JMP.&kernel32.GetModuleFileNameA>
/*705976*/ MOV EAX,ESP
/*705978*/ CALL ddd_.00405DF8
/*70597D*/ MOV EBX,EAX
/*70597F*/ MOV DWORD PTR DS:[6B7118],EBX
/*705985*/ TEST EBX,EBX
/*705987*/ JNZ SHORT ddd_.00705993
/*705989*/ MOV EAX,DWORD PTR DS:[6B710C]
/*70598E*/ MOV DWORD PTR DS:[6B7118],EAX
/*705993*/ MOV EAX,ddd_.006B7108
/*705998*/ CALL ddd_.00406110
/*70599D*/ ADD ESP,108
/*7059A3*/ POP EBX
/*7059A4*/ RETN
CALL ddd_.0070289E выглядит так:
/*70289E*/ MOV DWORD PTR DS:[6D34AC],EAX
/*7028A3*/ XOR EAX,EAX
/*7028A5*/ NOP
/*7028A6*/ MOV DWORD PTR DS:[6D34B0],EAX
/*7028AB*/ NOP
/*7028AC*/ MOV DWORD PTR DS:[6D34B4],EDX
/*7028B2*/ MOV EAX,DWORD PTR DS:[EDX+4]
/*7028B5*/ MOV DWORD PTR DS:[6D3020],EAX
/*7028BA*/ NOP
/*7028BB*/ CALL ddd_.00403AD0
/*7028C0*/ MOV BYTE PTR DS:[6D3028],0
/*7028C7*/ CALL ddd_.00403B78
/*7028CC*/ RETN
Обратите внимание на CALL ddd_.00403B78 я его маленько изменил, т.к. в оригинале его выполнение идёт в вазных участках памяти. У меня он выглядит так:
/*403B78*/ PUSH EBP
/*403B79*/ MOV EBP,ESP
/*403B7B*/ PUSH EBX
/*403B7C*/ PUSH ESI
/*403B7D*/ PUSH EDI
/*403B7E*/ MOV EAX,DWORD PTR DS:[6D34AC]
/*403B83*/ TEST EAX,EAX
/*403B85*/ JE SHORT ddd_.00403BD2
/*403B87*/ MOV ESI,DWORD PTR DS:[EAX]
/*403B89*/ XOR EBX,EBX
/*403B8B*/ MOV EDI,DWORD PTR DS:[EAX+4] Здесь адрес начала таблицы EAX и ниже вся таблица.
/*403B8E*/ XOR EDX,EDX
/*403B90*/ PUSH EBP
/*403B91*/ PUSH ddd_.00403BBE
/*403B96*/ PUSH DWORD PTR FS:[EDX]
/*403B99*/ MOV DWORD PTR FS:[EDX],ESP
/*403B9C*/ CMP ESI,EBX
/*403B9E*/ JLE SHORT ddd_.00403BB4
/*403BA0*/ MOV EAX,DWORD PTR DS:[EDI+EBX*4]
/*403BA3*/ INC EBX
/*403BA4*/ MOV DWORD PTR DS:[6D34B0],EBX
/*403BAA*/ TEST EAX,EAX
/*403BAC*/ JE SHORT ddd_.00403BB0
/*403BAE*/ CALL EAX
/*403BB0*/ CMP ESI,EBX
/*403BB2*/ JG SHORT ddd_.00403BA0
/*403BB4*/ XOR EAX,EAX
/*403BB6*/ POP EDX
/*403BB7*/ POP ECX
/*403BB8*/ POP ECX
/*403BB9*/ MOV DWORD PTR FS:[EAX],EDX
/*403BBC*/ JMP SHORT ddd_.00403BD2
/*403BBE*/ JMP ddd_.004035E4
/*403BC3*/ CALL ddd_.00403B18
/*403BC8*/ CALL ddd_.004038EC
/*403BCD*/ CALL ddd_.00403940
/*403BD2*/ POP EDI
/*403BD3*/ POP ESI
/*403BD4*/ POP EBX
/*403BD5*/ POP EBP
/*403BD6*/ RETN
Приведу таблицу CALL EAX:
006B6910 24 73 40 00 C0 70 40 00 $s@.Аp@.
006B6918 50 85 40 00 50 82 40 00 P…@.P‚@.
006B6920 04 EF 40 00 B8 4E 42 00 п@.ёNB.
006B6928 B4 EF 40 00 64 F0 40 00 ґп@.dр@.
006B6930 2C 47 42 00 1C F5 40 00 ,GB.х@.
006B6938 58 FE 40 00 10 A4 41 00 Xю@.¤A.
006B6940 34 3B 42 00 74 46 44 00 4;B.tFD.
006B6948 F8 4E 42 00 E8 3E 42 00 шNB.и>B.
006B6950 18 A8 44 00 AC 17 44 00 ЁD.¬D.
006B6958 DC 29 44 00 CC 0C 43 00 Ь)D.М.C.
006B6960 4C 16 43 00 28 20 43 00 LC.( C.
006B6968 14 61 42 00 78 51 42 00 aB.xQB.
006B6970 E0 5D 42 00 20 51 42 00 а]B. QB.
006B6978 B0 71 45 00 F0 72 45 00 °qE.рrE.
006B6980 B8 72 45 00 60 72 45 00 ёrE.`rE.
006B6988 28 72 45 00 28 73 45 00 (rE.(sE.
006B6990 88 73 45 00 7C C4 45 00 €sE.|ДE.
006B6998 44 C4 45 00 E0 FA 45 00 DДE.аъE.
006B69A0 34 2B 46 00 E0 35 46 00 4+F.а5F.
006B69A8 A4 4A 46 00 90 6C 46 00 ¤JF.ђlF.
006B69B0 B0 6E 46 00 78 75 46 00 °nF.xuF.
006B69B8 B0 75 46 00 48 76 46 00 °uF.HvF.
006B69C0 D4 1F 48 00 0C 20 48 00 ФH.. H.
006B69C8 C4 2A 48 00 90 7D 48 00 Д*H.ђ}H.
006B69D0 A0 81 48 00 BC 82 48 00  ЃH.ј‚H.
006B69D8 64 8A 48 00 7C 9A 48 00 dЉH.|љH.
006B69E0 DC 9A 48 00 EC BA 48 00 ЬљH.мєH.
006B69E8 48 C2 48 00 EC 97 49 00 HВH.м—I.
006B69F0 F8 AB 49 00 30 AC 49 00 ш«I.0¬I.
006B69F8 68 AC 49 00 B8 AC 49 00 h¬I.ё¬I.
006B6A00 50 E4 4A 00 30 E5 4A 00 PдJ.0еJ.
006B6A08 8C E7 4A 00 84 0E 4B 00 ЊзJ.„K.
006B6A10 60 3B 4B 00 94 65 4B 00 `;K.”eK.
006B6A18 18 DD 4B 00 6C 0C 4C 00 ЭK.l.L.
006B6A20 F0 2A 4C 00 04 2E 4C 00 р*L..L.
006B6A28 84 47 4C 00 A8 4A 4C 00 „GL.ЁJL.
006B6A30 38 58 4C 00 70 7D 4C 00 8XL.p}L.
006B6A38 24 86 4C 00 50 96 4C 00 $†L.P–L.
006B6A40 08 97 4C 00 B4 A2 4C 00 —L.ґўL.
006B6A48 58 BD 4C 00 90 BD 4C 00 XЅL.ђЅL.
006B6A50 94 1D 4D 00 4C 1E 4D 00 ”M.LM.
006B6A58 00 81 4D 00 A0 81 4D 00 .ЃM. ЃM.
006B6A60 30 79 4E 00 60 AF 4E 00 0yN.`ЇN.
006B6A68 1C 18 4F 00 9C 2A 4F 00 O.њ*O.
006B6A70 A4 33 4F 00 1C 3C 4F 00 ¤3O.<O.
006B6A78 F4 49 4F 00 1C 98 4F 00 фIO.?O.
006B6A80 6C DD 50 00 20 FC 50 00 lЭP. ьP.
006B6A88 28 FF 50 00 E0 28 51 00 (яP.а(Q.
006B6A90 40 3E 51 00 58 45 51 00 @>Q.XEQ.
006B6A98 28 79 51 00 B8 89 51 00 (yQ.ё‰Q.
006B6AA0 2C 8A 51 00 0C CA 51 00 ,ЉQ..КQ.
006B6AA8 9C CD 51 00 F0 E4 51 00 њНQ.рдQ.
006B6AB0 94 10 52 00 30 11 52 00 ”R.0R.
006B6AB8 CC 36 52 00 5C 99 52 00 М6R.\™R.
006B6AC0 5C 3B 52 00 04 0C 63 00 \;R..c.
006B6AC8 54 63 6B 00 C4 4D 52 00 Tck.ДMR.
006B6AD0 04 62 52 00 EC 6F 52 00 bR.мoR.
006B6AD8 9C 79 52 00 18 9A 52 00 њyR.љR.
006B6AE0 90 A4 52 00 BC B1 52 00 ђ¤R.ј±R.
006B6AE8 04 5A 6B 00 BC 28 6B 00 Zk.ј(k.
006B6AF0 58 7D 52 00 F8 21 6B 00 X}R.ш!k.
006B6AF8 F8 83 52 00 A4 87 52 00 шѓR.¤‡R.
006B6B00 64 8F 52 00 A4 95 52 00 dЏR.¤•R.
006B6B08 30 0A 6B 00 AC C4 52 00 0.k.¬ДR.
006B6B10 10 C7 52 00 38 D6 52 00 ЗR.8ЦR.
006B6B18 38 DC 52 00 88 DC 52 00 8ЬR.€ЬR.
006B6B20 68 EA 52 00 9C F7 52 00 hкR.њчR.
006B6B28 B0 DE 6A 00 EC FB 52 00 °Юj.мыR.
006B6B30 A4 97 5E 00 6C 97 5E 00 ¤—^.l—^.
006B6B38 0C 14 53 00 B8 22 53 00 .S.ё"S.
006B6B40 10 93 56 00 D4 F5 56 00 “V.ФхV.
006B6B48 30 F7 56 00 AC 5C 53 00 0чV.¬\S.
006B6B50 34 BD 54 00 D4 8A 56 00 4ЅT.ФЉV.
006B6B58 48 EA 5C 00 18 07 53 00 Hк\.S.
006B6B60 04 A8 57 00 00 36 53 00 ЁW..6S.
006B6B68 C4 4B 53 00 00 32 55 00 ДKS..2U.
006B6B70 90 32 55 00 24 FC 52 00 ђ2U.$ьR.
006B6B78 E4 36 55 00 DC 9C 55 00 д6U.ЬњU.
006B6B80 0C 8B 56 00 78 92 56 00 .‹V.x’V.
006B6B88 28 9F 55 00 50 04 56 00 (џU.PV.
006B6B90 88 04 56 00 B0 92 56 00 €V.°’V.
006B6B98 8C EA 5C 00 C4 EA 5C 00 Њк\.Дк\.
006B6BA0 FC EA 5C 00 34 EB 5C 00 ьк\.4л\.
006B6BA8 F8 19 5E 00 00 82 58 00 ш^..‚X.
006B6BB0 94 FE 58 00 04 22 59 00 ”юX."Y.
006B6BB8 3C 22 59 00 74 22 59 00 <"Y.t"Y.
006B6BC0 A0 2D 5B 00 10 39 5B 00  -[.9[.
006B6BC8 DC 41 5B 00 14 42 5B 00 ЬA[.B[.
006B6BD0 7C 09 5C 00 88 E7 5C 00 |.\.€з\.
006B6BD8 44 89 60 00 7C 87 60 00 D‰`.|‡`.
006B6BE0 98 CF 5F 00 44 9D 5E 00 ?П_.Dќ^.
006B6BE8 8C 8F 60 00 98 D9 69 00 ЊЏ`.?Щi.
006B6BF0 D0 D9 69 00 B8 45 6A 00 РЩi.ёEj.
006B6BF8 40 54 6A 00 B4 54 6A 00 @Tj.ґTj.
006B6C00 8C 82 63 00 A8 64 6A 00 Њ‚c.Ёdj.
006B6C08 6C CF 69 00 C8 B1 60 00 lПi.И±`.
006B6C10 00 B2 60 00 38 B2 60 00 .І`.8І`.
006B6C18 70 B2 60 00 A8 B2 60 00 pІ`.ЁІ`.
006B6C20 38 F3 60 00 78 F3 60 00 8у`.xу`.
006B6C28 78 84 61 00 E4 91 61 00 x„a.д‘a.
006B6C30 64 94 61 00 14 31 62 00 d”a.1b.
006B6C38 A8 94 61 00 D0 95 61 00 Ё”a.Р•a.
006B6C40 98 95 61 00 C0 3A 62 00 ?•a.А:b.
006B6C48 64 2F 62 00 28 95 61 00 d/b.(•a.
006B6C50 CC EF 61 00 08 21 62 00 Мпa.!b.
006B6C58 60 95 61 00 D4 9C 61 00 `•a.Фњa.
006B6C60 14 E2 61 00 64 3B 62 00 вa.d;b.
006B6C68 44 5E 62 00 E4 62 62 00 D^b.дbb.
006B6C70 30 66 62 00 50 CC 69 00 0fb.PМi.
006B6C78 4C 69 62 00 B4 84 69 00 Lib.ґ„i.
006B6C80 8C 6B 62 00 38 86 62 00 Њkb.8†b.
006B6C88 78 86 62 00 C8 A3 62 00 x†b.ИЈb.
006B6C90 EC D0 62 00 14 E6 62 00 мРb.жb.
006B6C98 24 F2 62 00 00 FC 62 00 $тb..ьb.
006B6CA0 34 0F 63 00 34 1C 63 00 4c.4c.
006B6CA8 68 23 63 00 50 34 63 00 h#c.P4c.
006B6CB0 FC 43 63 00 08 53 63 00 ьCc.Sc.
006B6CB8 C0 58 63 00 50 5B 63 00 АXc.P[c.
006B6CC0 C0 63 63 00 A0 6E 63 00 Аcc. nc.
006B6CC8 34 74 63 00 44 7C 63 00 4tc.D|c.
006B6CD0 B8 80 63 00 A4 CB 63 00 ёЂc.¤Лc.
006B6CD8 18 E9 63 00 20 EB 63 00 йc. лc.
006B6CE0 E0 F5 63 00 F8 F8 63 00 ахc.шшc.
006B6CE8 A4 FD 63 00 C4 08 64 00 ¤эc.Дd.
006B6CF0 60 0F 64 00 64 33 64 00 `d.d3d.
006B6CF8 64 3B 64 00 78 3F 64 00 d;d.x?d.
006B6D00 4C 47 64 00 E4 56 64 00 LGd.дVd.
006B6D08 14 5A 64 00 E0 6E 64 00 Zd.аnd.
006B6D10 0C 1A 65 00 80 1A 65 00 .e.Ђe.
006B6D18 C8 C4 65 00 7C B1 66 00 ИДe.|±f.
006B6D20 90 D8 67 00 7C DB 67 00 ђШg.|Ыg.
006B6D28 5C DE 67 00 98 E3 67 00 \Юg.?гg.
006B6D30 30 8D 68 00 68 95 68 00 0Ќh.h•h.
о
Теперь пороверим. CALL EAX падает в двух местах. В одном JMP 180000, а в другом PUSH 1111000. В оригинале дойдём до этих мест и всё, что там делается скопируем в нашу секцию с импортом.



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 17 сентября 2005 00:47
· Личное сообщение · #19

SergSh пишет:
На счёт спёртых байт мне кажется здесь этот термин не совсем подходит, т.к. речь идёт о эмуляции основной ветки.

Пожалуй, я с тобой соглашусь. Я то же пришел к примерно такому же мнению. Но я пока не знаю, по какому пути пойти. Кстати нашел англоязычную статью про распаковку 2-го астра, правда там нет VM, но
есть любопытные идеи по поводу обнаружения эмулируемых аспром апи-функций. И применен инлайн-патч. Провда я так и не понял, как его автор использовал. Ведь аспр зачищает свободные участки и проверяет CRC, а приведенный unpack виснет.
Кстати, а в твоем приведенном выше ответе, что за прога? По тексту не совсем ясно.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

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

tar4
Уж не J0hnWh0 ли его писал? У него анпак виснет. Если да, то я инлайнил, основываясь на туторах от него и Алекса. Кстати говоря, заинлайнил на ура. Аспр был вроде со всеми защитами. Если что, пиши в личку, хотя могу и тут пофлудить. CRC частей не мешает инлайнить никак, а файла образ патчиться перед крк, инлайник вышел примерно на 1-1.5 экрана в Оле.



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

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

Вроде заработала. Делал Так:
1. Делаем проход как обвычно. После останова на секции кода смотрим ESP-8, там VEOP. Переходим на VEOP и запоминаем команды которые там находятся. Перепускаем прогу. В окне
дампа пишим D addr VOEP и Shift+9 пока не увидим распакованные команды с VEOP. Далее переходим на адрес 00401000 делаем поиск келов, восстанавливаем импорт и сниваем дамр.
2. Т.к. протектор должен работать с разными прграммами, то можносделать вывод, что начало
программ у всех будет одинаковое мне понравилось преведённое выше. Остановимся подробнее
на восстановлении CALL EAX. Делаем обыкновенный проход, жмём Shift+9 пока не дайдём до 403В78 ниже видем CALL EAX, кстати пока идём видим какие подпрограммы должны присутствовать в нашем коде. С 403В78 трассируем по F7. Заходим в CALL EAX трассируем по F7. Трассируем пока не увидим код типА:
L000:
SUB ESI,DWORD PTR DS:[ECX]
JMP L003
???
L003:
LEA ECX,DWORD PTR DS:[ECX+EBP+3]
SUB ECX,EBP
CMP ECX,EBX
JB L000
Это уловка аспра самосканирующий код, bc ставить нельзя, поэтому ставим бряк на доступ
SBB EBX,F1105286
и после его сработки трассируем по F7 пока в ECX не станет адрес следующей команды. После этого смело F2 на адрес SBB EBX,F1105286 бряк сработал, убрали его. Трассируем по F7 пока
не увидим код:
POP ESI
ADD EBX,EDI
POP EBX
ADD EBP,DWORD PTR DS:[EDI+10]
CALL EBP - здесь идёт выполнение интересующих нас келов
PUSH DWORD PTR SS:[ESP+20]
LEA EBP,DWORD PTR DS:[EDI+EAX]
Чтобы не восстанавливать их в ручную напишем маленький скрипт:
var temp
var startscan
var d
var prg
mov d,0
mov prg,0
mov temp,7B1000 //сюда будем писать восстанавливаемые келы
r:
mov startscan, 12000F3 // мой адрес CALL EBP
bphws startscan, "x" //Установили брейкпоинт на CALL EBP
run
bphwc startscan //Убрали брейкпоинт с CALL EBP
add d,1
cmp d,3
jae r
mov prg,eax
cmp prg,11E0860 //Это адрес последнего последнего закодированного кела
je rr
mov [temp],ebp
add temp,4
mov d,0
jmp r
rr:
ret
Приметивно, но работает. Прога запустится и поадресу 7B1000 будет восстановленнфя таблица
CALL EAX, которая приведено выше. Копируем таблицу и вставляем в наш дамп. Колличество циклов можно подсчитать. Далее трассируем CALL EAX, прога упадёт пару раз это все восстановите сами. Прога упадет на функии по адресу 407664-её затёр ImportREC восстановите её. Далее:
/*7B1018*/ XOR EAX,EAX
/*7B101A*/ MOV DWORD PTR SS:[ESP+8],Dumped_.00403A34
/*7B1022*/ CALL Dumped_.006B54E4
/*7B1027*/ CALL Dumped_.006B6394
По адресам 6b5f0b и 6b5fe6 происходит проверка контрольной суммы. Просто поставте своё значение. Всё прга работае. Концовку допишете сами.



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 20 сентября 2005 07:04
· Личное сообщение · #22

[i]SergSh пишет:
/*7B1009*/ XOR EAX,EAX
/*7B100B*/ MOV DWORD PTR SS:[EBP-10],EAX и так далее
Я не все понял из твоего описания.
Ты откуда взял этот код? Или просто написал стандартное начало проги? Половину из этого я нашел, а половину нет.



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 20 сентября 2005 21:31
· Личное сообщение · #23

Т.к. протектор должен работать с разными прграммами, то можно сделать вывод, что начало
программ у всех будет одинаковое мне понравилось преведённое выше. А если быть точным, я взял его с
NotesHolder.exe.



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 21 сентября 2005 03:05
· Личное сообщение · #24

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



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 22 сентября 2005 02:56
· Личное сообщение · #25

Так и не разобрался, но исё равно победил. Просто занопил call по адресу 68A8B4. Концовку долго думать не стал:
/*7B102C*/ CALL Dumped_.0040913C
/*7B1031*/ CALL Dumped_.006B64C0
/*7B1036*/ PUSH EAX
/*7B1037*/ CALL DWORD PTR DS:[<&kernel32.ExitProcess>]
Всё работает. Может кто-нибудь ещё предложит подобную прогу, для закрепления изученного материала.



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 22 сентября 2005 06:43
· Личное сообщение · #26

SergSh пишет:
Так и не разобрался, но исё равно победил

Пошел по твоему описанию этой проги. Ну, вообще, там очень много подводных камней.
Прошел всю таблицу CALL EAX. И остановился на адресе
006B5045 8B15 28216D00 MOV EDX,[DWORD DS:6D2128] ; в EDX пишется 006D1CFC
006B504B 8B12 MOV EDX,[DWORD DS:EDX] ; [edx] =01173A29 - нет в дампе
006B504D E8 06F0D4FF CALL d_oleaut.00404058 ; там падает
Копировать всю секцию 01170000 в дамп не хочется, а в чем причина - пока разобраться не могу.
Ты как прошел это место.
И насчет закрепления материала.
Я выше по тексту, в этом топике указывал прогу - www.webfile.ru/513652. Там самое необходимое,
в минимальной конфигурации. Тот же аспр, та же VM. Тем более, мне она нужна. Давай ее. Я все равно собираюсь с ней разбираться. Если ссылка уже не действует, я обновлю.



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 22 сентября 2005 08:43
· Личное сообщение · #27

Это потому, что ты не с того места дампил, смотри пункт 1.
Но это можно поправить, дойди до момента когда VOE сформировалось и посмотри, что в 006D1CFC там будет то, что тебе нужно. Скопируй их и байты выше, где FFFFFFFFFFF, тем самым обнулится счётчик дней. И вставь всё это в свой дамп.
Ссылка битая, файл удалён.



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 22 сентября 2005 20:16
· Личное сообщение · #28

Я обновил ссылку webfile.ru/534538



Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 23 сентября 2005 06:04
· Личное сообщение · #29

SergSh пишет:
Просто занопил call по адресу 68A8B4. Концовку долго думать не стал:
/*7B102C*/ CALL Dumped_.0040913C

Вообщем,я почти до конца дошел, но концовка так и не получилось. Где-то, перед самым открытием 2-го окна.
По этому адресу 68A8B4 нет у меня CALL.
Не могу закончить выполнение функции /*7B1027*/ CALL Dumped_.006B6394.
В системной библиотеке вызывается Int 2E и на ней падает. А в оригинале появляется 2-е окно.



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 23 сентября 2005 08:59
· Личное сообщение · #30

Ничего подобного не видел. Дай адресок по ближе к теме, т.к CALL Dumped_.006B6394 и есть сама программа. Проверку контрольной суммы исправил?



Ранг: 115.3 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 23 сентября 2005 20:36
· Личное сообщение · #31

VОЕР после прохода в ESP+4c. Прога Microsoft Visual C++ 6.0. IAT целая. Обкод для восстановления функций IAT сегодня FF15.


<< . 1 . 2 . 3 . 4 . 5 . >>
 eXeL@B —› Протекторы —› Распаковка AsProtect >1.23 - от А до Я.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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