Сейчас на форуме: igorcauret, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› трюки решения условного перехода
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 19.4 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 26 марта 2015 22:40
· Личное сообщение · #1

Как-то встречал статью Каспера, где он писал что момент перехода при регистрации реализовать без je\jne ПРАКТИЧЕСКИ невозможно. так вот сам вопрос какие есть уловки для реализации подобного момента? криптография не учитывается




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 26 марта 2015 22:54
· Личное сообщение · #2

с защитой софта на другие форумы сходите



Ранг: 19.4 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 28 марта 2015 19:03
· Личное сообщение · #3

Да я как бы интересуюсь не с целью защитить что-то свое, а какие еще нестандартные решения существуют и могут попасться при отладке\дизассемблировании защит. Так что вроде бы по адресу. Но раз эта инфа засекречена для простых смертных, не входящих в круг "Избранных", тогда ладно...



Ранг: 71.2 (постоянный), 33thx
Активность: 0.050.12
Статус: Участник

Создано: 28 марта 2015 19:16 · Поправил: kunix
· Личное сообщение · #4

albatros
Вообразите себе, например, декодер видео, в котором некоторые константы в алгоритме вычисляются на основе серийного номера и ID устройства. И если серийный номер неверный, константы будут неверными. "Критических" условных переходов там не будет, да и константы вполне можно вычислить без единого условного перехода, если постараться.
Вообразили? Какие еще вопросы?




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 28 марта 2015 19:32
· Личное сообщение · #5

kunix
+1

albatros
Возьми напр. изучи защиту программы Portrait Professional, там нету сравнений и переходов касаемо защиты

-----
ds





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 28 марта 2015 19:43
· Личное сообщение · #6

DimitarSerg это от того же автора что и PhotoInstrument ? тогда знаем




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 28 марта 2015 19:48 · Поправил: Kindly
· Личное сообщение · #7

DimitarSerg пишет:
Возьми напр. изучи защиту программы Portrait Professional

albatros, или попроще защиту Sim Aquarium 3, ритейл версия DMDE.
общий смысл в чтении кусков кода из регистрационных массивов - такой софт без валидной активации/ключа не сломать.
если хочешь сэкономить время и нервы ни в коем случае не смотри PhotoInstrument

-----
Array[Login..Logout] of Life




Ранг: 19.4 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 28 марта 2015 20:47 · Поправил: albatros
· Личное сообщение · #8

kunix идея примерно ясна, за исключением того, как разработчик будет получать ID дабы сгенерировать верные константы, учитывая, что подавляющее большинство рядовых пользователей понятия не имеет, что это такое) разве что в состав инсталятора будет входить патч-генератор, но тогда опять костанты могут не на то указывать или... в общем уже сам запутался, но это уже дело техники...
Kindly все-таки потрачу пару нервных клеток на PhotoInstrument, так как только на днях его установил... наверное, это судьба что такое Sim Aquarium 3 без малейшего представления, но обязательно гляну...
в общем, спс за указание верного направления для дальнейших исследований.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 28 марта 2015 21:12 · Поправил: reversecode
· Личное сообщение · #10

DimitarSerg
пойду скачаю для коллекции



Ранг: 20.4 (новичок), 8thx
Активность: 0.030
Статус: Участник

Создано: 28 марта 2015 21:35
· Личное сообщение · #11

albatros пишет:
Как-то встречал статью Каспера, где он писал что момент перехода при регистрации реализовать без je\jne ПРАКТИЧЕСКИ невозможно.

Склонен считат, что виной тому: скудоумие разработчиков. Есть инструкции SETNE(...), через которые можно "вылезти". Наверняка еще куча неочевидных способов найдется.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 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');
-----------
где тут условные переходы?
и вообще причем тут условные переходы.. я хз.. че вы к ним прицепились.. вмпрот повесте.. и будете вы этот переход искать годами

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 28 марта 2015 23:06
· Личное сообщение · #13

VodoleY пишет:
где тут условные переходы?

кэп мне подсказует что тут f(SN)



Ранг: 19.4 (новичок), 1thx
Активность: 0.030
Статус: Участник

Создано: 28 марта 2015 23:07
· Личное сообщение · #14

VodoleY пишет:
вмпрот повесте..

очень творческий подход=) это любой дурак может сделать.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 29 марта 2015 01:05
· Личное сообщение · #15

загрузил этот портреит в иду, а там все в исходниках, даже символы не пострипаны .. скукота




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 29 марта 2015 02:41 · Поправил: DimitarSerg
· Личное сообщение · #16

reversecode пишет:
загрузил этот портреит в иду, а там все в исходниках, даже символы не пострипаны .. скукота

Триал грузил ? в нём ничего нету.

Вот это я думаю поинтереснее будет (кому еще скучно - оцените):
http://cloudfront.portraitprofessional.com/12.1.5/PortraitProStudioSetup_en.exe

Добавлено спустя 5 минут
зачтется любое решение

-----
ds




Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 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.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 29 марта 2015 10:00
· Личное сообщение · #18

je/jne - этож операции с флагами, значит можно через
Code:
  1. pushfd
  2. POP EAX

считать значение 6 бита (Zero flag) и корректировать адрес безусловного прыжка для ветки

способов действительно достаточно




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 29 марта 2015 10:33 · Поправил: Kindly
· Личное сообщение · #19

DimitarSerg
тогда уже лучше максимальную давать

reversecode
http://cloudfront.portraitprofessional.com/12.2.1/PortraitProStudioMaxSetup.exe
без валидной активации ниче в этой версии не поймешь, что куда прыгает.

вот, к примеру, ритейл версия, которую многие ковыряли
--> Link <--
ключ для онлайн активации уже вроде в бане, но рега для нее имеет такой вид, сгенерена под мой CPUID:
--> Link <--

привязка у этой программы имеется к HWID, на основе WMI (8 идентификаторов) и проверка этого только при старте одноразово, вот патченый для 11.3.4
--> Link <--
но этот файл у вас не будет работать с выложеной регистрацией, потому что весь остальной функционал завязан на вычислениях CPUID, причем патчить его нельзя, так как перед 0F A2 юзается динамик JMP, который в зависимости от параметров защиты совершает прыжки в разные места около CPUID, так что это в один шаг может быть инструкция push с байтами 0F A2, в другой может вообще cpuid перепрыгнуть, а может и на нем остановится, либо прыгнуть вообще в другое место, так что свою инструкцию туда не воткнешь.
как уже пришли к выводу, проще эту прогу купить, чем взломать

-----
Array[Login..Logout] of Life





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 29 марта 2015 12:14
· Личное сообщение · #20

причем здесь триал не триал,
вы под мак версию скачайте
сразу станет понятно чем челы это сделали




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 29 марта 2015 12:26
· Личное сообщение · #21

reversecode
Обьясни простым смертным. Я вот мак в глаза никогда не видел и софт под него тоже.

-----
ds





Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 29 марта 2015 12:42 · Поправил: Kindly
· Личное сообщение · #22

насколько я понял из под IDA это вобщем, ничего не понял.
это какая-то кастомная система лицензирования?

-----
Array[Login..Logout] of Life




Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 29 марта 2015 12:59 · Поправил: v00doo
· Личное сообщение · #23

Kindly, он скорее всего имел ввиду скачать версию под Mac:
http://cloudfront.portraitprofessional.com/12.2.1/PortraitProTrialSetup64.pkg
И засунуть ее в IDA (предполагаю, что там разобрать проще или что-то в виде подсказки лежит).

Остальные линки, еесли кому-то глянуть захочется, а то там спамят на мыло:
Trial
Code:
  1. http://cloudfront.portraitprofessional.com/12.2.1/PortraitProTrialSetup.exe
  2. http://cloudfront.portraitprofessional.com/12.2.1/PortraitProTrialSetup64.pkg
Pro
Code:
  1. http://cloudfront.portraitprofessional.com/12.2.1/PortraitProStudioMaxSetup.exe
  2. http://cloudfront.portraitprofessional.com/12.2.1/PortraitProStudioMax64Setup.exe

Pro под мак как-то не выцепил...




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 29 марта 2015 13:19 · Поправил: Kindly
· Личное сообщение · #24

v00doo пишет:
Pro под мак как-то не выцепил...

http://cloudfront.portraitprofessional.com/12.2.1/PortraitProStudioMaxSetup.dmg
http://cloudfront.portraitprofessional.com/12.2.1/PortraitProStudioMaxSetup64.dmg

-----
Array[Login..Logout] of Life




Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 29 марта 2015 13:23 · Поправил: v00doo
· Личное сообщение · #25

Kindly, точно dmg же еще есть, забыл про их образы.
Но я так и ничего там не увидел
Может reversecode объяснит не догоняющим?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 29 марта 2015 13:34 · Поправил: reversecode
· Личное сообщение · #26

v00doo пишет:
PortraitProTrialSetup64.pkg

символы не стрипнутые, в конце файла видны
когда ида закончит анализ она покажет все функции
сразу видно чем поработали для обфускации, на паблике проскакивало
в обратную сторону тоже вроде снимается

v00doo пишет:
а то там спамят на мыло:

а зачем вводить свое мыло ? левое введи, линки дают потом

| Сообщение посчитали полезным: v00doo

Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 31 марта 2015 07:04
· Личное сообщение · #27

reversecode пишет:
PortraitProTrialSetup64.pkg

вижу пользовательские имена, либо стандартных либ к защите не имеющие отношения
v00doo нашел что нить интересное?




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 31 марта 2015 10:55
· Личное сообщение · #28

reversecode пишет:
сразу видно чем поработали для обфускации

если знаешь, скажи чем. у нас же не форум гадалок

-----
Array[Login..Logout] of Life




Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 31 марта 2015 13:32
· Личное сообщение · #29

Kindly пишет:
у нас же не форум гадалок

Kindly пишет:
если знаешь, скажи чем. у нас же не форум гадалок

да ну ????




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 31 марта 2015 19:22 · Поправил: Crawler
· Личное сообщение · #30

да можно миллион разных вариантов придумать. Можно маску накладывать на кусок кода, ставить в зависимость от серийника константы, как правильно тут писали.

Кстати, у того же КасперскИ читал про юридические тонкости взлома. Что якобы можно поменять флаговый регистр - и типа ты не сломал программу, а только изменил состояние своего оборудования. Как по мне, то это похоже на словоблудие: "я не убивал, я просто проткнул ножом ему живот")

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.



. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› трюки решения условного перехода
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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