Сейчас на форуме: igorcauret, Rio (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Помогите с проверкой целостности кода |
Посл.ответ | Сообщение |
|
Создано: 18 апреля 2015 19:51 · Поправил: OttoDeFix · Личное сообщение · #1 Всем добрый вечер! Есть две программы у обеих есть проверка на целостность кода. Программа 1 1. Написана на - сейчас затрудняюсь ответить. 2. Упаковщик - UPX (с этим проблем нет) 3. Ограничение на запуск, только один экземпляр программы можно запустить. 4. Присутствует реклама. После распаковки и восстановления импорта программа запускается, но коннекта к серверу нет, сначала подумал, что накосячил с распаковкой. Скачал автораспаковщик, распаковал им, результат тот же, запускается но коннекта нет. На время забросил разбираться с коннектом, с запуском нескольких экземпляров разобрался и сделал инлаин патч в виде загрузчика. Сейчас вернулся к проблеме с коннектом, когда возился с инлаин патчем я понял, что в программе идет проверка на целостность (когда встроил патч в упакованный exe файл). Для пущей убедительности в упакованном exe файле немного изменил PE заголовок, а конкретно прописал контрольную сумму изначально она была 000000, в результате поведение повторилось прога запускается, а коннекта нет. Подскажите, как отловить проверку? и какие методы проверки есть (с помощью каких апи функций). Так же буду благодарен, если до кучи кинете crackme с проверками целостности, но не сильно мудреные (crackme от PEkilla не предлагать ![]() Программа 2 1. Написана на Delphi 7 2. Упаковщик UPX 3. Есть цифровая подпись - не знаю может ли она на что-то влиять. 4. Регистрация - хочу написать кейген После распаковки выводит сообщение о повреждении файла, не могу отловить данное окошко, подскажите какими методами можно отловить создание окна. Проверка срабатывает, даже если переименовать упакованный exe файл. ![]() |
|
Создано: 18 апреля 2015 20:05 · Поправил: dosprog · Личное сообщение · #2 |
|
Создано: 18 апреля 2015 20:06 · Личное сообщение · #3 OttoDeFix без ссылок на программы (в упакованном/запакованном виде) дальнейший разговор не имеет смысла - т.е. софт в студию. А без софта - обычные гадания. ![]() |
|
Создано: 18 апреля 2015 20:26 · Личное сообщение · #4 dosprog пишет: Так зачем тогда ковырять проверку целостности? Как-то разбирать алгоритм проверки ключа, а тем более его найти в упакованной проге очень муторно. ELF_7719116 пишет: А без софта - обычные гадания. А мне для начала это и надо, иначе у меня потеряется интерес. Я хочу понять, как можно отловить проверку, если пользователю не выводится сообщение и какие методы проверки на целостность есть. А вот если сам уже не осилю, тогда уже скажу, что запрога и кто-нибудь ее разберет за 5 мин. ![]() |
|
Создано: 18 апреля 2015 20:50 · Личное сообщение · #5 OttoDeFix пишет: Я хочу понять, как можно отловить проверку CreateFile, ReadFile, MapFileAndCheckSum Если хочешь съесть арбуз, нужно думать как арбуз. Читать от корки до корки: ![]() |
|
Создано: 18 апреля 2015 20:52 · Поправил: dosprog · Личное сообщение · #6 |
|
Создано: 18 апреля 2015 21:07 · Личное сообщение · #7 TryAga1n пишет: Если хочешь съесть арбуз, нужно думать как арбуз. Читать от корки до корки: имхо хрень.. есть старый баян.. еще с времен доса.. "ловля на дрозофила" и неебет суть в чем.. заменяеш 1 байт.. и смотриш.. работает ли твоя прога.. если нет.. ищеш другое место.. если да. то варианта 2. либо чтение памяти, либо чтения файла. ВСЕ!!! ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 18 апреля 2015 21:09 · Поправил: dosprog · Личное сообщение · #8 |
|
Создано: 18 апреля 2015 21:16 · Личное сообщение · #9 dosprog пишет: Функционал при этом исчез. более тонкий подход.. это менять в памяти... если функционал остался.. значит образ файла проверяется? или на оборот.. на ЕР стоим.. и меняем в памяти данные на оригинал.. узнаем каким хером чекается проверка ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 18 апреля 2015 21:24 · Поправил: dosprog · Личное сообщение · #10 |
|
Создано: 18 апреля 2015 21:35 · Личное сообщение · #11 |
|
Создано: 18 апреля 2015 22:09 · Личное сообщение · #12 TryAga1n пишет: Читать от корки до корки Спасибо за доку, почти то что искал, еще бы crackme желательно с примером решения. dosprog пишет: MapViewOfFile Это как у asprotect? А где можно прочитать, как с ее помощью осуществляется проверка? VodoleY пишет: более тонкий подход.. это менять в памяти... В памяти все норм, с помощью загрузчика (который патчит процесс упакованного файла на возможность запуска второго окна) все нормально, открыто два окна и есть связь. Всем еще раз спасибо, пойду читать статью и поищу инфу по поводу MapViewOfFile ![]() |
|
Создано: 18 апреля 2015 22:12 · Личное сообщение · #13 |
|
Создано: 18 апреля 2015 22:36 · Поправил: dosprog · Личное сообщение · #14 OttoDeFix пишет: А где можно прочитать, как с ее помощью осуществляется проверка? Что там читать.. В памяти по возвращаемому адресу оказывается целиком весь рассматриваемый файл. Это такой упрощённый (для юзера) вариант, заменяющий буферизированное чтение файла. Дальше в зависимости от собственной фантазии можно проверять его как угодно. ![]() |
|
Создано: 18 апреля 2015 22:59 · Личное сообщение · #15 |
|
Создано: 18 апреля 2015 23:37 · Поправил: Kindly · Личное сообщение · #16 |
|
Создано: 19 апреля 2015 05:45 · Личное сообщение · #17 |
|
Создано: 19 апреля 2015 19:14 · Поправил: OttoDeFix · Личное сообщение · #18 |
|
Создано: 19 апреля 2015 19:58 · Поправил: dosprog · Личное сообщение · #19 OttoDeFix пишет: В общем, [..] В общем, запускать у себя её не буду, нету времени. Но чтение обычным ReadFile, подсчёт суммы и сравнение её с данными, записанными в оверлее (80 dec. байтов). Имхо ![]() |
|
Создано: 19 апреля 2015 22:42 · Поправил: Kindly · Личное сообщение · #20 OttoDeFix (nastya), если не хочешь возиться с вычислениями перенаправляй проверку на копию оригинала через GetModuleFileNameA, либо делай что-то с проверками начиная отсюда: 009A1D78 Наверное, врядли прога даст запатчить напрямую, но как вариант попробуй подменить требуемые данные. Суть топика помочь, а не сделать - ведь так? ![]() ----- Array[Login..Logout] of Life ![]() |
|
Создано: 20 апреля 2015 06:15 · Поправил: OttoDeFix · Личное сообщение · #21 dosprog пишет: Но чтение обычным ReadFile, подсчёт суммы и сравнение её с данными, записанными в оверлее (80 dec. байтов) Блин... оверлей! Извини не заметил твое сообщение, где ты про оверлей спрашивал, а сейчас глянул в упакованном экзешние. Kindly пишет: если не хочешь возиться с вычислениями перенаправляй проверку на копию оригинала через GetModuleFileNameA, либо делай что-то с проверками начиная отсюда: 009A1D78 Уфф... ну значит я в правильном направлении шел, как раз разбирал функцию по адресу 9A1D8D - после ее выполнения в стек заносится размер файла в юникоде, но без оверлея (в распакованном, оверлея нет) я и заплутал. Kindly пишет: Суть топика помочь, а не сделать - ведь так? Это точно, иначе интерес потеряется, я за эту прогу взялся ради любопытства (увидел на компе пользователя не знакомый софт) и решил поковырять. P.S. Как можно организовать с помощью патча автосмену имени объекта mutex? ![]() |
|
Создано: 20 апреля 2015 11:19 · Личное сообщение · #22 |
|
Создано: 20 апреля 2015 12:19 · Личное сообщение · #23 |
|
Создано: 20 апреля 2015 12:24 · Поправил: dosprog · Личное сообщение · #24 |
|
Создано: 21 апреля 2015 11:36 · Личное сообщение · #25 |
|
Создано: 21 апреля 2015 12:04 · Личное сообщение · #26 |
|
Создано: 21 апреля 2015 16:46 · Личное сообщение · #27 |
|
Создано: 21 апреля 2015 16:54 · Личное сообщение · #28 |
![]() |
eXeL@B —› Вопросы новичков —› Помогите с проверкой целостности кода |