Сейчас на форуме: Lohmaty (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Внешняя компонента 1С накрытая armadillo |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 22 октября 2018 13:06 · Поправил: alfaservice · Личное сообщение · #1 Доброго всем времени суток! Есть dll внешняя компонента к 1С, проверял PEid, он защиту не определил показав что это MS VC ++ 8 Metod 2, ArmaFP показал что упакована Armadillo но не смог определить виды защиты и версию только показал: Protected Armadillo File Size 1478656 ?-Error (87) GetThreadContext ?-Error (183) EXCEPTION_BREAKPOINT address 0040307E 00000000 ?-Problem Process terminate <- Elapsed Time 00h 00m 00s 219ms -> ProtectionID определил что это Armadillo unknown version, более менее картина прояснилась с RDG packer Detector, он показал что это 8.20 (хотя брал я публичный протектор 6.60, накрывал файл и он тоже определялся как 8.20) и далее написал ==== Armadillo Deteccion Heuristica Check IsDebugger(API) aPLib compress ==== Все автоматические распаковщики типа Armageddon использующие loaddll спотыкались на загрузке, сначала просили подсунуть библиотеки 1С платформы и получив желаемое вываливались с ошибкой Cant' load library. Читал что протекторы dll файлы обычно не накрывают всеми степенями защиты, использовал скрипт unpack arma 3-8 с tuts4you для распаковки, через OllyDbg запустил как есть, через саму платформу, отвечал по разному на вопросы скрипта но unpack не получил (хотя когда 1С доходила до подгрузки библиотеки защиты Оля как и положено останавливалась и предлагала варианты из скрипта, т.е. получается что 1Сv77.exe прошла вместо loaddll для загрузки. Даже в один момент пока не ставил исключения в Olly появлялось окошко с вводом кода и пароля от армы без HWID. типа NAG. Смотрел туторы, про dll есть, пробовал MutexA, VirtualProect но не уверен что в моем случае это так же. библиотека то не обычная. Если есть какие мысли с чего начать и что делать, буду благодарен. Модератору не закрывай тему, продукт российский и выкладывать думаю глупо будет как ссылку на программу так и ее саму уверен разработчики здесь есть если кто-то хочет посоветовать или посмотреть напишите в личку я ссылки все скину на ядиск (просто за все время существования exelab только на одну тему с 1С наткнулся и то там ничего конкретного сказано не было). ![]() |
|
Создано: 22 октября 2018 14:28 · Личное сообщение · #2 Можно начать с dependency walker, проверить, какие библиотеки использует целевая DLL, собрать их все в одной папке (учитывая их собственные зависимости, разумеется). Возможно, что исходная платформа заранее сама подгружает всё необходимое. Предполагаю так именно потому, что LoadDLL из комплекта OllyDbg не делает ничего специфического и должна грузить любую библиотеку. Ещё проверь, по какому адресу грузится твоя целевая DLL, релоцируемая ли она (должна быть, но мало ли). Общий же совет: начни свой путь с чего-то попроще, посвящай этому 3-4 часа в сутки, за месяц при таком подходе ты довольно неплохо прокачаешься в реверсе. Но ключевой фактор - двигаться постепенно от простого к сложному. Сначала распаковка простого UPX, потом ASPack, вручную, без скриптов, по обучающим материалам. Потом распакуешь Armadillo из примеров, в которых указаны конкретные адреса (т.е. распаковка заранее известного сэмпла), потом распаковка DLL, и только после этого переходи к скриптам "всё в одном". Без базовых знаний велик риск, что ты будешь делать ошибки на каждом маленьком шагу. ----- EnJoy! ![]() |
|
Создано: 22 октября 2018 14:37 · Поправил: alfaservice · Личное сообщение · #3 Опыт у меня есть, asprotect снимал на delphi проге, реверс делал, отучал ее от регистрации. здесь ситуация такая что эта библиотека типа Addin.Extended COM Object с GUID типа {} она не регистрируется она подключается (вызывается в 1С) и далее вызываются методы библиотеки (метод библиотеки не равен функции библиотеки т.е. не является функцией), и они русскоязычные например из 1С вызывается так Библиотека.Защита() далее в самой библиотеке вызываются методы платформы так же могут быть русскоязычные, для защиты используются константы инн организации дата окончания работы библиотеки для продления платного и т.д. они передаются в библиотеку проверяются и возвращаются назад в 1С и уже 1С вызывает окно типа messagedlg messagebox и пр. Поэтому отловить можно передачу параметров только в библиотеке и взломать, как было до тех пор пока библиотеку не накрыли армой, прошел почти год а решения нет на том же руборде до сих пор. Или есть но в паблик не выкладывают ![]() |
|
Создано: 22 октября 2018 15:36 · Личное сообщение · #4 alfaservice разницы между условными ocx и dll в распаковке нет. разберитесь с зависимостями, загружая библиотеку самописным лоадером и чекая ошибки после loadlibrary. остальное Jupiter уже ответил ----- От многой мудрости много скорби, и умножающий знание умножает печаль ![]() |
|
Создано: 22 октября 2018 16:56 · Поправил: alfaservice · Личное сообщение · #5 За советы спасибо! буду пробовать. Здесь https://yadi.sk/d/I3gwMlKUOWVTnQ исходники (в С++ не очень разбираюсь) загрузчика внешних компонент, без регистрации их в реестре, с ним компонента грузится без него даже 1С не загружает ее. Если кто поможет дописать loaddll.exe буду благодарен она собрана на MS VC++ 6 ![]() |
|
Создано: 24 октября 2018 15:40 · Поправил: alfaservice · Личное сообщение · #6 Попробовал по тутору Armadillo 6.40 (Standard Protection), используя для работы библиотеки родную 1С дошел до заветного PUSH 14 после нашел PUSH 100 и по первому call заменил PUSH EBP на retn. И схлопотал ошибку ollydbg is unable to read registers and update eip (и оно понятно стоит защита от отладки) Хотя и стронг и фантом стоят плагины. Другой тутор вроде как по (Standard + Debug-Blocker) но и тут вилы ArmaDetach принимает библиотеку но висит в состоянии Filename: guard.dll LoadDll process iD: [0000045C] Processing... Продвинулся дальше дошел до вызова CALL EAX хард брейк поставил запустил, прога вышла просто из отладки, запустилась. Решил перезапустить без установок брейков, ведь хард брейк стоит, в итоге вывалилась ошибка связанная с чтением адреса EIP ![]() |
|
Создано: 29 октября 2018 14:41 · Личное сообщение · #7 |
|
Создано: 29 октября 2018 15:34 · Поправил: lx60 · Личное сообщение · #8 BlackCode Видимо, не может В личку мне написал: "Раньше компонента не была накрыта и была сломана и не раз на руборде. сейчас уже почти полгода как нет решения. Ну если хочешь посмотреть, на руборде в топике 1с 7.7. есть конфигурация Камин 2.0.95" Так и не дал ссылку на скачивание. Шляться по всяким рубордам мне лично некогда. ![]() |
|
Создано: 29 октября 2018 15:36 · Личное сообщение · #9 BlackCode пишет: Можете саму компоненту (DLL) выложить? Отправил в личке lx60 пишет: Видимо, не может Вам тоже Добавлено спустя 5 минут Я уже голову сломал, завтра запишу видео что я делаю и к чему все приводит. Тут вся фишка в том что, арма как бы не мешает, не является инструментом лицензирования, всего лишь защита от взлома. Механизм лицензирования у компоненты свой. Код конфигурации, ИНН организации, и дата окончания, первые два статические, т.е. Код это номер регистрационный 1С, ИНН, и так понятно. по этим данным формируется ключ на стороне разработчика, добавляется дата окончания (но по истечении даты прога не перестает работать, пишет только что с установкой обновления ключ надо будет менять ибо работать не будет) ![]() |
|
Создано: 30 октября 2018 11:04 · Личное сообщение · #10 |
|
Создано: 30 октября 2018 11:44 · Поправил: alfaservice · Личное сообщение · #11 Неа ) попробовал совместить тутор 6.40 standart и статью https://exelab.ru/art/?action=view&id=285, oep взял в секции text поставив на нее HB сделал дамп в imprec вычел из адреса начала секции базовый адрес, нажал IAT AutoSearch потом ShowInvalid потом CutThunk после select section and fulldump. Далее взял Armadillo Reducer 1.7.1 RC2 по тутору все сделал ну в ImpRec fixdump, ничего не вышло библиотека не является рабочей PE. Но... в ней по F3 тотал командера стало видно что она делает, методы и пр., копаю дальше. что-то с импортом или не все предусмотрел (пошел по самому легкому пути. Через Олю так и не получилось найти OEP Добавлено спустя 2 часа 57 минут Ну теперь обращусь к гуру https://yadi.sk/d/BMYqSIgzpgHEoQ по ссылке лежат два файла библиотеки, old это старая версия которая не была покрытая армой, new новая которая была накрыта и подвергнута тому что писал в этом посте снял дамп и пр. в принципе и одна и вторая похожи в просмотре видны методы и пр. но первая рабочая вторая нет, т.е. испорчен я так понимаю импорт (может не только). Если не трудно сравните скажите что не доделал и доделал ли вообще что либо ![]() |
|
Создано: 30 октября 2018 20:59 · Личное сообщение · #12 alfaservice пишет: испорчен я так понимаю импорт Смешно, потому что импорт - то немногое, с чем у файла более-менее в порядке )) Убиты релоки (адрес 00148000). Кривые секции (#5,#6,#7). Убиты ресурсы (кривая секция). По сути ты только и сделал, что прикрутил нормальный импорт к кривому файлу. Изучай работу армы с релоками и восстанавливай их. Изучай работу с ресурсами. Ресурсы прикручиваешь в самый последний момент (предварительно их перестроив на новый адрес). ----- EnJoy! ![]() |
|
Создано: 30 октября 2018 21:07 · Личное сообщение · #13 |
|
Создано: 30 октября 2018 21:14 · Личное сообщение · #14 |
|
Создано: 30 октября 2018 21:25 · Личное сообщение · #15 |
|
Создано: 30 октября 2018 21:37 · Личное сообщение · #16 |
|
Создано: 31 октября 2018 10:17 · Поправил: alfaservice · Личное сообщение · #17 https://yadi.sk/d/Z_aYyduxBK9gdg По ссылке три файла дампа 1) kmnguard_dump_первый дамп imprec.dll Дамп из imprec (брейк в Оле на секции .text. после imprec вычел из адреса начала секции базовый адрес, нажал IAT AutoSearch потом ShowInvalid потом CutThunk после select section only .text and fulldump) 2) kmnguard_dump_arma_reducer.dll Второй дамп уже с arma reducer 3) kmnguard_dump_fixdump после reducer.dll вернулся в imprec и нажал fixdump https://youtu.be/gr60O-TNMxk ну а здесь видео как делал Добавлено спустя 7 минут Если не трудно, ссылки на тутор подкиньте по восстановлению релоков и ресурсов. Добавлено спустя 5 часов 27 минут Второе видео попытка найти OEP по методу Бряк VitrtualProtect -> CreateThread - > Hard Break на второй CALL где что не правильно делаю, подскажите https://youtu.be/FT6-lrJBnlg ![]() |
|
Создано: 01 ноября 2018 11:25 · Личное сообщение · #18 alfaservice пишет: где что не правильно делаю, подскажите Уже всё написал выше, Сначала ресурсы сохрани с нужным базовым адресом, а потом уже отрезай лишние секции. arma reducer - кривой инструмент явно, после него файл убитый. Релоков основного кода в файле нет, нужно добавить. alfaservice пишет: тутор подкиньте по восстановлению релоков и ресурсов Релоки: Мапишь библы по двум разным адресам, потом сравниваешь Ресурсы: Перестраиваешь ресурсы на адрес, который будет в конечном файле (после всех импортов и т.д.), потом прикручиваешь отдельной последней секцией ----- EnJoy! ![]() |
|
Создано: 01 ноября 2018 12:18 · Личное сообщение · #19 |
|
Создано: 01 ноября 2018 22:09 · Личное сообщение · #20 Лог по событиям арма, часть конечной фазы запуска, важные события(сервисный лог выключен). Можно снять полный лог по выборке памяти, но врядле это вам чем то поможет. Выше видно что оно отладчику шлёт кучу нотифи, врядле это олли может разрулить. ![]() ----- vx ![]() |
|
Создано: 06 ноября 2018 14:30 · Личное сообщение · #21 |
|
Создано: 06 ноября 2018 14:38 · Личное сообщение · #22 Если сам не осилил, то в запросы. С того момента, как я тебе А сейчас даже если я тебе посоветую использовать инструменты типа ResFix или Resource Binder, вряд ли тебе это поможет без базовых знаний. ----- EnJoy! ![]() |
|
Создано: 06 ноября 2018 15:19 · Поправил: alfaservice · Личное сообщение · #23 Я только одного не понял, вы писали что релоков нет в файле, однако они есть и в полном дампе и после редусера есть cсекция .reloc, он портит только ресурсы. секция .rsrc. И по содержимому секции релоков вывод делаю такая же секция есть и в не накрытой старой версии, по крайней мере начало у них похоже, сравнение не делал. Единственная разница что меняются адреса. По поводу самообразования. Я не занимался изучением как таковым, но читал туторы и статьи по распаковке здесь и на тутсе. Единственное что для меня сложно это PE структура смещения адреса и пр. Если в фул дампе Virtual Size Virtual Address значения одни то после импорта дампа секции в библу другую все меняется. Вот это для меня сложновато И то что после прота Импорт Экспорт directory разделяются на разные секции. В оригинальном файле они внаходятся в одной секции .rdata а в арме .rdata .pdata ------- Ладно бог с ними, скажу пусть покупают. Раз на руборде никто не сломал значит или не могут и не возможно или не нужно! ![]() |
|
Создано: 06 ноября 2018 19:06 · Поправил: difexacaw · Личное сообщение · #24 alfaservice > И то что после прота Импорт Экспорт directory разделяются на разные секции. Секций нет, потому что к ним нет доступа, его выполняет сам протектор, настраивает всё. Сохранять нужно лишь некоторые секции, с которыми работает система, это ресурсы например. Так как система пройдёт весь путь до выборки ресурса начиная от заголовка модуля, те по всему формату. code/data и как следствие всё остальное не нужно. Секции обычно делятся по атрибутам памяти, а не по таблице секций пе. > Единственное что для меня сложно это PE структура смещения адреса и пр. А зачем вам это знать, если вы используете набор готовых тулз ? ----- vx ![]() |
|
Создано: 06 ноября 2018 19:15 · Личное сообщение · #25 Для начала определимся с терминологией. Релоки — это данные, которые позволяют системе запускать образы не по их изначальному адресу. Релоки обрабатывает загрузчик, который должен знать, какие адреса необходимо исправять (данные по каким адресам требуют корректировки). При этом релоки не могут применяться к упакованным данным по очевидным причинам: данные необходимо сначала распаковать, а потом уже релоцировать. Поэтому в образе файла, защищённого армой, релоки могут только для запуска стаба самой армы, а релоки защищённой программы арма хранит во внутреннем формате и применяет самостоятельно после распаковки. Чтобы убедиться, что в файле есть нужные релоки, достаточно посмотреть, на какие секции указывают значения в таблице релоков — ты можешь посмотреть, что в твоих файлах они ведут в секцию упаковщика (которую мы потом удаляем), а не в секцию кода распакованной программы (как должно быть). ----- EnJoy! ![]() |
|
Создано: 06 ноября 2018 19:18 · Поправил: difexacaw · Личное сообщение · #26 Jupiter Всё так, но только вот это не ясно: > указывают значения в таблице релоков — ты можешь посмотреть, что они ведут в секцию упаковщика, а не в секцию кода распакованной программы. А каким образом отличить криптованную секцию от протектора или самой апп ? Особенно в статике, это из области фантастики. Если только не в виде частного случая, когда есть секции и имена их. ----- vx ![]() |
|
Создано: 06 ноября 2018 19:26 · Личное сообщение · #27 |
|
Создано: 06 ноября 2018 22:01 · Личное сообщение · #28 Ребят я по сути 1с-ник для меня сложно понятие кода но при этом читать код исходника проги могу и править, для меня ново понятие pe заголовков тут я действую на бум но при этом читаю туторы меня бухи порвут без обновы а переводить их на типовую конфу 1с зикбу более затратно по времени. Добавлено спустя 2 минуты Да и ассемблер для меня лес темный хотя инструкции его понимаю ![]() |
|
Создано: 06 ноября 2018 22:09 · Личное сообщение · #29 alfaservice Да всё понятно. Купить жаба душит, но зато бухи порвут подневольного 1С-ника )) Даже по тому, как ты тут попку рвёшь, чтобы бухам угодить, видно, что ты человек ответственный, но научить тебя распаковке за пару постов довольно сложно (да и не охота), так что пора тебе в запросы и надеяться, что кому-то будет не лень заниматься твоим случаем. А вообще, бухи ещё не заслужили работать в том, что ты пытаешься им замутить, если им не готовы это купить. P.S. Когда тебя реально припрёт, ты и с ресурсами разберёшься, и с релоками, и с распаковкой. На это реально не так много времени требуется, если голова варит. ----- EnJoy! ![]() |
|
Создано: 06 ноября 2018 22:25 · Личное сообщение · #30 ))) да не буду я попу рвать. И так неделю каждый день вникал... Сайт делать пойду php декод куда проще Добавлено спустя 16 часов 51 минуту Jupiter Jupiter пишет: Если сам не осилил, то в запросы. Чтобы в запросы надо полностью выложить все платформу 1С, конфигурацию которая подгружает эту библу, рассказать как что работает как запустить и т.д. как я говорил ранее ни один из вариантов loaddll.exe не грузит эту библиотеку, ни одна тулза не подгружает эту библу например тот же armadetach? он просто висит не создав процесс, так как используют все ту же loaddll.exe которая не загружает библу. и даже разобрав все зависимости и подложив все зависимые библиотеки и их зависимые получается одно. Can't load library ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Внешняя компонента 1С накрытая armadillo |
Эта тема закрыта. Ответы больше не принимаются. |