Сейчас на форуме: igorcauret, Rio (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› трюки решения условного перехода |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 26 марта 2015 22:40 · Личное сообщение · #1 |
|
Создано: 26 марта 2015 22:54 · Личное сообщение · #2 |
|
Создано: 28 марта 2015 19:03 · Личное сообщение · #3 |
|
Создано: 28 марта 2015 19:16 · Поправил: kunix · Личное сообщение · #4 albatros Вообразите себе, например, декодер видео, в котором некоторые константы в алгоритме вычисляются на основе серийного номера и ID устройства. И если серийный номер неверный, константы будут неверными. "Критических" условных переходов там не будет, да и константы вполне можно вычислить без единого условного перехода, если постараться. Вообразили? Какие еще вопросы? ![]() |
|
Создано: 28 марта 2015 19:32 · Личное сообщение · #5 |
|
Создано: 28 марта 2015 19:43 · Личное сообщение · #6 |
|
Создано: 28 марта 2015 19:48 · Поправил: Kindly · Личное сообщение · #7 DimitarSerg пишет: Возьми напр. изучи защиту программы Portrait Professional albatros, или попроще защиту Sim Aquarium 3, ритейл версия DMDE. общий смысл в чтении кусков кода из регистрационных массивов - такой софт без валидной активации/ключа не сломать. если хочешь сэкономить время и нервы ни в коем случае не смотри PhotoInstrument ![]() ----- Array[Login..Logout] of Life ![]() |
|
Создано: 28 марта 2015 20:47 · Поправил: albatros · Личное сообщение · #8 kunix идея примерно ясна, за исключением того, как разработчик будет получать ID дабы сгенерировать верные константы, учитывая, что подавляющее большинство рядовых пользователей понятия не имеет, что это такое) разве что в состав инсталятора будет входить патч-генератор, но тогда опять костанты могут не на то указывать или... в общем уже сам запутался, но это уже дело техники... Kindly все-таки потрачу пару нервных клеток на PhotoInstrument, так как только на днях его установил... наверное, это судьба ![]() в общем, спс за указание верного направления для дальнейших исследований. ![]() |
|
Создано: 28 марта 2015 21:06 · Поправил: DimitarSerg · Личное сообщение · #9 reversecode Не, это другой продукт, фотоинструмент - там вроде ВМ (и не одна), а портрет - интересная и очень нехилая защита с получением значений, которые используются как указатели, etc. для правильной работы программы и всё это с привязкой к cpuid + rsa1024 + обфускация и еще по мелочам ![]() albatros пишет: как разработчик будет получать ID дабы сгенерировать верные константы Банальный пример из портрета версии 8: для верной работы программы нужна верная таблица из >800байт, каждый байт должен считаться по формуле (если обфускацию свернуть): byteInTable[0x233] = cpuid[4]+ 0xB0 byteInTable[0x6C] = cpuid[0]+ 7 //(есть 6 байт цпуид, который с разными параметрами вызывается). есть и посложнее, каждый байт по своей какой-то формуле считается, так вот у клиента генерится хвид, отсылается автору, тот из него декриптует байтики, под которые считается "магическая" (верная) таблица под hiwd клиента, шифруется рса/другие операции и этот ключ отсылается покупателю, у него оно работать будет, а кого-то другого - нет ибо cpuid[4]+ 0xB0 будет давать другой байт и все дальнейшие вычисления с использованием полученного байта будут давать хз что ![]() ----- ds ![]() |
|
Создано: 28 марта 2015 21:12 · Поправил: reversecode · Личное сообщение · #10 |
|
Создано: 28 марта 2015 21:35 · Личное сообщение · #11 albatros пишет: Как-то встречал статью Каспера, где он писал что момент перехода при регистрации реализовать без je\jne ПРАКТИЧЕСКИ невозможно. Склонен считат, что виной тому: скудоумие разработчиков. Есть инструкции SETNE(...), через которые можно "вылезти". Наверняка еще куча неочевидных способов найдется. ![]() |
|
Создано: 28 марта 2015 22:25 · Поправил: VodoleY · Личное сообщение · #12 albatros пишет: реализовать без je\jne ПРАКТИЧЕСКИ i:=SN; x:=f(SN);/// ваша функа проверки регистрации.. 0 валидация прошла try i:=i div x; ShowMessage('CodeInValid'); exept ShowMessage('CodeValid'); ----------- где тут условные переходы? и вообще причем тут условные переходы.. я хз.. че вы к ним прицепились.. вмпрот повесте.. и будете вы этот переход искать годами ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 28 марта 2015 23:06 · Личное сообщение · #13 |
|
Создано: 28 марта 2015 23:07 · Личное сообщение · #14 |
|
Создано: 29 марта 2015 01:05 · Личное сообщение · #15 |
|
Создано: 29 марта 2015 02:41 · Поправил: DimitarSerg · Личное сообщение · #16 reversecode пишет: загрузил этот портреит в иду, а там все в исходниках, даже символы не пострипаны .. скукота Триал грузил ? в нём ничего нету. Вот это я думаю поинтереснее будет (кому еще скучно - оцените): http://cloudfront.portraitprofessional.com/12.1.5/PortraitProStudioSetup_en.exe Добавлено спустя 5 минут зачтется любое решение ![]() ----- ds ![]() |
|
Создано: 29 марта 2015 08:11 · Поправил: VodoleY · Личное сообщение · #17 SReg пишет: кэп мне подсказует что тут f(SN) да нет.. видимо ты не понял. в данной реалзиции f(SN) любая функа математическая, которая ввиде решения вернет 0. накуя в формуле условные переходы?. ну типа считать что все символы SN перексоренные друг с другом должны дать 0. result:=sn[0] xor sn[1] xor ...... sn[Length(SN)] ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 29 марта 2015 10:00 · Личное сообщение · #18 |
|
Создано: 29 марта 2015 10:33 · Поправил: Kindly · Личное сообщение · #19 DimitarSerg тогда уже лучше максимальную давать ![]() reversecode http://cloudfront.portraitprofessional.com/12.2.1/PortraitProStudioMaxSetup.exe без валидной активации ниче в этой версии не поймешь, что куда прыгает. вот, к примеру, ритейл версия, которую многие ковыряли ключ для онлайн активации уже вроде в бане, но рега для нее имеет такой вид, сгенерена под мой CPUID: привязка у этой программы имеется к HWID, на основе WMI (8 идентификаторов) и проверка этого только при старте одноразово, вот патченый для 11.3.4 но этот файл у вас не будет работать с выложеной регистрацией, потому что весь остальной функционал завязан на вычислениях CPUID, причем патчить его нельзя, так как перед 0F A2 юзается динамик JMP, который в зависимости от параметров защиты совершает прыжки в разные места около CPUID, так что это в один шаг может быть инструкция push с байтами 0F A2, в другой может вообще cpuid перепрыгнуть, а может и на нем остановится, либо прыгнуть вообще в другое место, так что свою инструкцию туда не воткнешь. как уже пришли к выводу, проще эту прогу купить, чем взломать ![]() ----- Array[Login..Logout] of Life ![]() |
|
Создано: 29 марта 2015 12:14 · Личное сообщение · #20 |
|
Создано: 29 марта 2015 12:26 · Личное сообщение · #21 |
|
Создано: 29 марта 2015 12:42 · Поправил: Kindly · Личное сообщение · #22 |
|
Создано: 29 марта 2015 12:59 · Поправил: v00doo · Личное сообщение · #23 Kindly, он скорее всего имел ввиду скачать версию под Mac: http://cloudfront.portraitprofessional.com/12.2.1/PortraitProTrialSetup64.pkg И засунуть ее в IDA (предполагаю, что там разобрать проще или что-то в виде подсказки лежит). Остальные линки, еесли кому-то глянуть захочется, а то там спамят на мыло: Trial Code:
Code:
Pro под мак как-то не выцепил... ![]() |
|
Создано: 29 марта 2015 13:19 · Поправил: Kindly · Личное сообщение · #24 |
|
Создано: 29 марта 2015 13:23 · Поправил: v00doo · Личное сообщение · #25 |
|
Создано: 29 марта 2015 13:34 · Поправил: reversecode · Личное сообщение · #26 v00doo пишет: PortraitProTrialSetup64.pkg символы не стрипнутые, в конце файла видны когда ида закончит анализ она покажет все функции сразу видно чем поработали для обфускации, на паблике проскакивало в обратную сторону тоже вроде снимается v00doo пишет: а то там спамят на мыло: а зачем вводить свое мыло ? ![]() ![]() |
|
Создано: 31 марта 2015 07:04 · Личное сообщение · #27 |
|
Создано: 31 марта 2015 10:55 · Личное сообщение · #28 |
|
Создано: 31 марта 2015 13:32 · Личное сообщение · #29 |
|
Создано: 31 марта 2015 19:22 · Поправил: Crawler · Личное сообщение · #30 да можно миллион разных вариантов придумать. Можно маску накладывать на кусок кода, ставить в зависимость от серийника константы, как правильно тут писали. Кстати, у того же КасперскИ читал про юридические тонкости взлома. Что якобы можно поменять флаговый регистр - и типа ты не сломал программу, а только изменил состояние своего оборудования. Как по мне, то это похоже на словоблудие: "я не убивал, я просто проткнул ножом ему живот") ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› трюки решения условного перехода |