![]() |
eXeL@B —› Вопросы новичков —› Распаковка ПО для работы с SPD ОЗУ и разлочка функций |
Посл.ответ | Сообщение |
|
Создано: 23 декабря 2018 22:03 · Личное сообщение · #1 Уважаемые товарищи, приветствую. Опыт в реверсе и крэкинге ещё набираю, но пользоваться отладчиком и дизасмом умею, читаю и понимаю код довольно многих языков программирования, что иногда облегчает задачи. Друг недавно попросил посмотреть программу, смогу ли разблокировать функции, которые заблочены, если нет файла с рег данными. Название софта начинается на Thaiphoon. Полностью не пишу, чтобы не индексировалось, потому что автор полный неадекват и параноик. Даже по отношению к легальным пользователям. Софт позволяет работать с SPD оперативной памяти. Ссылка на файл программы Первым делом проверил на упаковщик/протектор. Файл упакован PECompact 3.02.2. На тот момент даже с этим упаковщиком не умел работать, но научиться хотелось, поэтому результат такой: 1. OEP на 005BDE4C На OEP прыгаем тут Code:
2. Работал в x64dbg. Для дампа и восстановления импорта использовал встроенную Scylla. Весь импорт valid, сдампил и пофиксил. 3. Ввиду отсутствия опыта, запустил полученный файл на рабочей системе. ПК почему-то ушёл в перезагруз и после больше не смог стартануть. Оказалось, что на всех моих 4-ёх планках был затёрт SPD. Тут я прошу Вашей помощи. Прошу поделиться Вашим опытом, может кто сталкивался с таким поведением софта после распаковки. Моё предположение, что автор написал что-то руками, какой-то код, который проверяет был ли файл распакован или нет. Если да, то софт трёт SPD и перезагружает ПК без возможности понять в чём дело и восстановить SPD. Может ошибаюсь, не знаю, не хватает опыта и того, кто мог бы подсказать в какую сторону посмотреть. По итогу, планки я восстановил и принялся копать дальше, только уже пробовал всё на виртуалке. Подумал, что, может я хреново распаковал (?), опыта в распаковке PECompact не было, подумал, что допустил где-то ошибку. Однако, после ещё трёх попыток распаковки, с использованием других инструментов (Olly и ImpRec), результат оставался таким же: перезагрузка ПК и стирание SPD. Хочу развиваться в направлении исследования защиты ПО и её обхода. Уже потратил около 2.5 недель на этот файл, читал форумы на exelab и tuts'ах, при первых трудностях не побежал на форумы просить сделать всё за меня, а стал разбираться сам. Но сейчас моих знаний не хватает, прошу Вас не решать мою проблему за меня, а, как более опытных профессионалов в исследовании защит, подсказать мне куда посмотреть, может я что-то упустил. Программа имеет определённые ограничения, если нет регистрации. Например, нельзя сохранить дамп прошивки в формате BIN. Это ограничение я обошёл, проследив за строкой "Saving data to a binary file is not available in the Demo version". Два jne лоадером изменил на je и получил сохранение в BIN. Часть кода с проверкой на демо версию: Code:
Поковыряв exe, понял, что функционал полной версии есть, но он станет доступным, только если рядом с прогой будет лежать валидный regdata.rkf файл. Но как блочится функционал - просто кнопки записи и других полезных функций становятся отключёнными (disabled или grayed out). В прошлом был опыт исследования одной известной проги для работы с жёсткими дисками Western Digital. Та тоже написана на Delphi и там тоже были заблокированные кнопки. Там я их разблокировал, насильно указав в коде следовать на функцию EnableMenuItem. В данном же случае я нашёл, что в коде формируется запрос на EnableMenuItem( HMENU hMenu, UINT uIDEnableItem, UINT uEnable) с параметрами. Параметры кладутся в стек здесь Code:
В push dword ptr ss:[ebp+10] как раз передаётся 0, 1 или другой int, который управляет состоянием кнопки. Но, как оказалось, данная процедура действует не для всех пунктов верхнего меню. Встал вопрос, как же тогда формируются другие пункты, которые разблокированы для использования? Или это я лопух и поздно ставлю бряк на эту функцию? На Delphi не писал сам никогда, поэтому мог упустить какую-то банальную вещь, о которой просто даже не подозреваю. В итоге, суть данного поста - помогите, пожалуйста, советом. Почему после распаковки софт ведёт себя таким образом? Подскажите куда посмотреть в коде. Есть ли какой-то обвес от автора? Какие ещё функции могут задавать статус кнопок? Я не лентяй, прежде, чем писать сюда, усердно пользовался поиском, но свойств типа Enabled у кнопок в данной проге нет, тогда всё было бы очень просто, менять с false на true. EnableMenuItem на некоторые пункты просто не действует. Что ещё может быть? Самые интересные кнопки Буду благодарен любым советам, любой помощи. ![]() |
|
Создано: 23 декабря 2018 22:07 · Личное сообщение · #2 |
|
Создано: 23 декабря 2018 22:18 · Личное сообщение · #3 reversecode Дело в том, что это я и есть, если Вы про последнее сообщение в той теме. 7 версия работает только на х86 и не берёт новые ПК, к тому же каждая версия этого ПО имеет внутреннюю тайм бомбу. Ещё 7-ая версия работает только, если выставить системную дату на апрель 2011 и до загрузки ОС. Как гласит реклама в футтере "Нужно вылечить программу? Взломай сам". Вот и хочу сделать 15 версию. Кейген от 7-ой версии не подходит, уже пытался "обмануть систему". Прежде, чем написать сюда, я действительно перелопатил много информации, чтобы не отнимать время других людей. Если у кого-то из здешних товарищей будет время, чтобы подсказать мне в какую сторону идти, буду очень благодарен. ![]() |
|
Создано: 23 декабря 2018 22:22 · Личное сообщение · #4 |
|
Создано: 24 декабря 2018 09:51 · Личное сообщение · #5 ставь бряки на запись mov eax,dword ptr ds:[5C4EB4] и mov eax,dword ptr ds:[5C5154] и лови момент, когда туда будет что-то писаться. Или глобально в IDA поищи ссылки на эти адреса. Тебя надо найти кусок где идет проверка, а ты сейчас смотришь на следствия этой проверки. Возможно это решит сразу и проблему недоступных кнопок. ![]() |
|
Создано: 24 декабря 2018 09:58 · Личное сообщение · #6 > функционал полной версии есть, но он станет доступным, только если рядом с прогой будет лежать валидный regdata.rkf файл. Так эту проверку и нужно искать. Так как дальше она определяет логику работы апп; если меню доступно, это не значит что оно будет работать. > как же тогда формируются другие пункты Как угодно, может там вообще винапи не используется, а меню реализуется самим апп. Зачем гадать, вам нужно посмотреть активность по апи, что оно вызывает. ----- vx ![]() |
|
Создано: 24 декабря 2018 10:53 · Личное сообщение · #7 shura_k,difexacaw Спасибо за ответы. shura_k, да, согласен, расписал про проверку, а сам смотрел следствия. Сейчас посмотрю что там будет по записи в указанных местах. difexacaw, вот тут интересно. Прога на дельфи, предположим, что она сама рисует меню и кнопки, значит, по идее, должна использовать формы и TMenu, и TButton. А если так, то у TButton должно быть свойство Enabled. В De decompiler засовывал распакованный файл, показало код форм и события кликов на кнопки, есть событие btWriteOnClick. Теоретически, полные функции заложены. Ну, или я ещё далёкий лох и всё это - мои неверные размышления, или размышляю верно, но есть ещё какие-то способы отрисовки меню, кроме как самим апп или через винапи. Спасибо, что уделили время и изложили свои мысли. ![]() |
|
Создано: 24 декабря 2018 11:10 · Личное сообщение · #8 |
|
Создано: 26 декабря 2018 02:36 · Личное сообщение · #9 manavi4 адреса файла с твоими листингами из дебагера не совпадают, скачал файл по твоей ссылке, распаковал и запустил - эта обычная демка. кнопки включаются элементарно стандартно для дельфи через edx, адрес 00460C68, шура выше верно написал, там 2-3 глобальных переменных которые содержат указатели на поведение процедура проверки на анпак - 0050F7D4 банальная, открытие и получение размера, константа с которой сравнивается размер тут: 0050F808 |. C700 D8422600 MOV DWORD PTR DS:[EAX],2642D8, если больше то... ![]() |
|
Создано: 26 декабря 2018 14:00 · Поправил: manavi4 · Личное сообщение · #10 SReg Читаю вас и понимаю, что мой уровень где-то там, далеко-глубоко... Даже не представляю сколько у вас опыта в этом деле. Но очень благодарен вам за ваш комментарий. Для меня это очень важные и полезные знания на будущее. Знаю, что для вас эта программа не представляет интереса, поэтому я искренне благодарен вам за потраченное вами время. По поводу различия в листинге. У меня в папке версий этого ПО от 7-ой до 15-ой и есть две 15-ые версии, одна DEMO, а вторая пишет FREE VERSION. Я проверил, я смотрел FREE VERSION. Прошу извинить, что не проверил версию и получилось, что листинг реально не от той версии, что в ссылке. Все кнопки я разблокировал, ещё пару дней назад. Только остался один вопрос: когда формируется начальная форма с кнопками Create, Read и прочими, то кнопка Write скрывается. Какие только методы не брейкал, не могу отследить в какой момент кнопка Write убирается с панели. Много времени трассировал как CreateButton, так и Destroy. Возможно, что даже смотрел не то, что нужно было... ![]() |
|
Создано: 26 декабря 2018 20:14 · Поправил: difexacaw · Личное сообщение · #11 |
|
Создано: 03 января 2019 13:43 · Личное сообщение · #12 |
|
Создано: 03 января 2019 16:23 · Личное сообщение · #13 |
|
Создано: 03 января 2019 16:34 · Личное сообщение · #14 |
|
Создано: 03 января 2019 16:44 · Личное сообщение · #15 |
![]() |
eXeL@B —› Вопросы новичков —› Распаковка ПО для работы с SPD ОЗУ и разлочка функций |
Эта тема закрыта. Ответы больше не принимаются. |