eXeL@B —› Вопросы новичков —› Вопрос по поводу НАГа |
Посл.ответ | Сообщение |
|
Создано: 02 апреля 2017 22:22 · Личное сообщение · #1 Приветствую всех! Хотелось бы убрать наг с программы. Собственно уже порядочно покопался в программе, нашел и место, откуда запускается НАГ, и брякался после ввода левого кода и нажатия ОК, смотрел на проверку введенного серийника и т.п. Идеальным вариантом, как я понимаю, было бы отреверсить механизм генерации ключа и написать кейген, или хотя бы ввести валидный серийник, но там уж больно много условных переходов и вызовов, так что это оставлю на потом. Я понимаю так -- перед вызовом НАГа выполняется какая-то элементарная проверка на регистрацию, и если ее нет, то появляется НАГ. если же программа зарегистрирована, то НАГА нет. В общем место, где начинает выполняться НАГ, на скрине. Как выяснить, откуда происходит переход на выполнение НАГа ? cf98_02.04.2017_EXELAB.rU.tgz - 1111111111.PNG Добавлено спустя 10 минут з.ы. на всякий случай скажу -- хотелось бы чтобы гуру показали, в какую сторону копать, не более того. мне не надо, чтобы гуру что-то сделал за меня. |
|
Создано: 02 апреля 2017 23:20 · Поправил: VodoleY · Личное сообщение · #2 VanHelsing посмотреть в стеке адреса возврата.. и останавливаться ПЕРЕД нагом.. типа cmp eax,0 jnz lab1 call ShowForm lab1: или вместо push ebp ret поставить.. вернетесь туда откуда вызвалась процедура ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... | Сообщение посчитали полезным: VanHelsing |
|
Создано: 03 апреля 2017 02:19 · Поправил: dosprog · Личное сообщение · #3 VanHelsing пишет: Как выяснить, откуда происходит переход на выполнение НАГа ? В простейшем случае адрес возврата находится в вершине стека. | Сообщение посчитали полезным: VanHelsing |
|
Создано: 03 апреля 2017 03:05 · Личное сообщение · #4 вызовы процедур типично дельфинские, поэтому я бы сказал, что есть смысл искать TForm.Create для класса нужной формы. IDR разве не помогает? | Сообщение посчитали полезным: VanHelsing |
|
Создано: 03 апреля 2017 11:55 · Личное сообщение · #5 |
|
Создано: 03 апреля 2017 14:18 · Личное сообщение · #6 |
|
Создано: 03 апреля 2017 15:39 · Личное сообщение · #7 TryAga1n пишет: есть какой-нибудь готовый инструмент? IDA? ну или любой другой современный дизассемблер, хоть тот же radare. сейчас графы стали стандартной функцией и есть в любом приличном инструменте. сейчас актуальна компонентная модель, когда есть набор компонентов в виде эмулятора, дизассемблера, парсеры бинарных файлов, анализаторы и прочее, а из них каждый лепит что то свое. на github для того же питона есть десятки библиотек, несколько строк кода и можно получить какие угодно графы, статические, динамические, логирование стека, итд. | Сообщение посчитали полезным: TryAga1n |
|
Создано: 03 апреля 2017 22:56 · Поправил: VanHelsing · Личное сообщение · #8 VodoleYVodoleY пишет: посмотреть в стеке адреса возврата.. и останавливаться ПЕРЕД нагом.. потихоньку ковыряюсь, спасибо! итак. formShow при запуске вызывается 2 раза (1 раз отрисовывается частично главное окно программы, во второй раз собственно появляется НАГ), оба раза в стеке одинаковый адрес возврата. кстати если туда поставить бряк, и потом в программе нажать "регистрация", то брякается на этом же адресе. и еще -- если запустить программу, закрыть НАГ, а потом поставить по этому адресу бряк, то брякнется при нажатии на любую кнопку, скажем настройки, "about" и прочих. по адресу возврата такой код: http://i.piccy.info/i9/5e898545a218646312fcd047f97a09a1/1491248990/24830/1134610/123456789.png как выяснилось, код отвечает за загрузку введенного ранее значения в поле ключа, -- formShow вызывается в любом случае, если сделать там безусловный переход (или при трассировке установить флаг Z), то поле с ключом будет загружаться пустым. и я так понял что для других окон тоже через этот адрес передаются значения. в общем ковыряюсь дальше! Добавлено спустя 6 минут -=AkaBOSS=--=AkaBOSS=- пишет: вызовы процедур типично дельфинские, поэтому я бы сказал, что есть смысл искать TForm.Create для класса нужной формы. IDR разве не помогает? программа дельфийская, PeID и DIE показали Borland Delphi 6-7. только я ведь и не реверсер вовсе, и про IDR только слышал мельком, не использовал )) я раньше слегка интересовался ассемблером, Ольгу юзал, на масме немного кодировал по урокам Икзелиона, а так чтобы плотно заниматься такого не было. да и Ольгу уже лет несколько не запускал )) кстати TForm.Create только одна, запускается 1 раз. |
|
Создано: 04 апреля 2017 00:35 · Поправил: VodoleY · Личное сообщение · #9 VanHelsing пишет: кстати TForm.Create только одна, запускается 1 раз. а нахрена ему вызываться много раз? вы батенька пытаетесь кастрировать последствия а не искать причину.. не верный подход ЗЫ.. вам как вариант.. на форме 2 таба (ну или панельки) на одной НАГ.. на второй сплеш.. в зависимости от совпадения ключа и хвида показывается или сплеш проги с данными регистрации.. или просят ввести номер.. пока вы прогу не положите. будет битва экстрасенсов ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... | Сообщение посчитали полезным: sefkrd |
|
Создано: 04 апреля 2017 00:46 · Поправил: VanHelsing · Личное сообщение · #10 VodoleY я вот что подумал -- в программе до нага отрисовывается главное меню -- а в главном меню есть пункт Register -- соответственно я подумал, что программа зареганная не будет показывать сей пункт -- а значит проверка реги проверяется раньше , чем появляется НАГ, а именно во время отрисовки главного меню. так вот. я нашел строку RegisterClick, если на нее поставить бряк то бряк работает. как можно выяснить тот момент, когда отрисовывается пункт Register в главном меню ? а программа собственно вот -- http://www.eusing.com/free_system_cleaner/system_cleaner.htm она бесплатная, и думаю защиты там никакой нет. есть проверка ключа, но там алго сложный, мне не по силам конечно. и разумеется для вас крякнуть ее убрав НАГ не составит труда, но мне не хотелось бы чтобы тут появилось решенье. хотя если можете подсказать в какую сторону копать -- то буду признателен, да и уже собственно признателен ) Добавлено спустя 4 минуты VodoleYVodoleY пишет: в зависимости от совпадения ключа и хвида показывается или сплеш проги с данными регистрации.. или просят ввести номер.. я там находил место, где после проверки ключа выдается сообщение о его инвалидности -- заджампил и все ок, вводишь любой ключ -- жмешь ОК вместо SKIP -- и прога работает. другое дело что НАГ все равно вылезает, то бишь проверка идет еще и раньше того как жмешь ОК. еще там место в окне about -- powered by -- тоже там NOPы поставил после чека и программа пишет POWERED BY: 111, как будто зареганная. ) а вот с НАГом никак не справлюсь. |
|
Создано: 04 апреля 2017 01:10 · Поправил: -=AkaBOSS=- · Личное сообщение · #11 VanHelsing пишет: соответственно я подумал, что программа зареганная не будет показывать сей пункт кстати это совсем необязательно. во многих продуктах остаётся этот пункт на случай если пользователь купит лицензию с более расширенными функциями или просто продлённым сроком действия.. VanHelsing пишет: а вот с НАГом никак не справлюсь. Code:
проверяемая переменная инициализируется тут Code:
| Сообщение посчитали полезным: VanHelsing |
|
Создано: 04 апреля 2017 01:21 · Личное сообщение · #12 VodoleY собственно нашел перед FormActivate все строки, в том числе mi.Register хардверный бряк на доступ почему-то не срабатывает ( Добавлено спустя 6 минут -=AkaBOSS=- я рядом был, Code:
Добавлено спустя 7 минут -=AkaBOSS=- пишет: кстати это совсем необязательно. во многих продуктах остаётся этот пункт на случай если пользователь купит лицензию с более расширенными функциями или просто продлённым сроком действия.. ну это да, просто был как вариант еще и там полазить, а вдруг ? ) |
|
Создано: 04 апреля 2017 01:37 · Поправил: -=AkaBOSS=- · Личное сообщение · #13 |
|
Создано: 04 апреля 2017 01:45 · Личное сообщение · #14 -=AkaBOSS=- не ну просто поклон вам! как вы так быстро крячите-то ??? (у меня правда азарт сразу пропал) в этом алгоритме я кстати лазил, в него попадал трассировкой после бряка по нажатию ОК в регистрационной форме. надо было думаю на начало алго бряк еще поставить -- не подумал сразу что он откуда-то еще вызывается, думал только при ОК. в общем как-то так. если не трудно скажите как нашли место с НАГом ? |
|
Создано: 04 апреля 2017 01:56 · Личное сообщение · #15 VanHelsing пишет: как вы так быстро крячите-то ? это шелуха) приходилось разбирать алгоритмы намного сложнее VanHelsing пишет: если не трудно скажите как нашли место с НАГом ? загрузил в IDR, нашёл нужную форму - TFrmRegister в списке классов нашёл адрес этого класса - 4DC244 а потом в hiew банальный поиск обращений к этому адресу и проверка найденного адреса в IDR фактически, первый же результат показал мне вызов того что мне нужно - TCustomForm.Create можно было и через бряк в ольке сработать, но мне работать статично как-то привычнее |
|
Создано: 04 апреля 2017 02:09 · Личное сообщение · #16 |
|
Создано: 04 апреля 2017 06:52 · Личное сообщение · #17 |
|
Создано: 06 апреля 2017 05:48 · Поправил: tempesta · Личное сообщение · #18 |
eXeL@B —› Вопросы новичков —› Вопрос по поводу НАГа |