1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

Овязки программ от железа, Отвязки программ от железа

Тема в разделе "Чужие", создана пользователем googie, 25 фев 2013.

  1. TopicStarter Overlay
    googie

    googie Команда форума

    Регистрация:
    27 июл 2012
    Сообщения:
    824
    Симпатии:
    616
    Сегодня я расскажу вам о довольно таки универсальном способе отвязки программ от железа. Единственное условие, без которого ничего не выйдет: У вас должен быть правильный ключ, привязанный к какому-то чужому ID.

    Итак, что нам понадобится:

    Olly Debugger v2;
    CFF Explorer;
    File Location Calculator от Manhunter'а; - Please login or register to view links
    Статья Manhunter'а о полезных функциях на ASM'е; - Please login or register to view links
    Немного мозгов;
    Более-менее прямые руки.


    Ссылки на ПО за вас найдет гугл. Для данной статьи я накидал простенькую программку deIDme, которая и послужит нам образцом для опытов.

    Please login or register to view links

    Она имеет простенький функционал:

    Получить VolumeID диска C:\ через GetVolumeInformation;
    Получить сумму байт ID;
    Сравнить введенную пользователем сумму, с полученной;
    Если все ОК - вывести хорошее сообщение, иначе - плохое.

    Конечно, можно было бы просто изменить условие проверки на противоположное, но не всегда все так просто...

    Алгоритм действий такой:

    Внедрить в EXE-файл чужой ID;
    Внедрить процедуру, которая будет копировать внедренный нами ID на место считанного;
    Найти место, где программа получает строку ID или ее части;
    Вызвать данную процедуру после получения ID;
    Ввести ключ от чужого ID и радоваться.


    НАЧАЛО


    Давайте запустим наше тестовое приложение и осмотримся.

    [​IMG]

    Я попробовал ввести любой ключ и получил "плохое" сообщение. Будем исправлять.


    ВНЕДРЕНИЕ

    Откроем CFF Explorer и в нем нашу программу. Нам нужен раздел Section Headers.
    [​IMG]

    Нам нужно добавить новую секцию для того, чтобы записать в нее наш ID.

    [​IMG]

    [​IMG]

    Вводим размер, равный количеству символов в строке + 1 байт на 0x00 байт. Т.е. у меня выходит, что 12 символов с строке ID, и +1 на байт-терминант.

    ЗАРАНЕЕ ИЗВЕСТНО, что для чьего-то ID = 123456789020, ключ должен быть: 1388.
    Поэтому я в новую секцию вписал нужный идентификатор.

    [​IMG]

    Теперь нужно узнать физический адрес данной секции. Запоминаем его.

    [​IMG]

    Сохраняем изменения в файле. Закрываем CFF Explorer.

    Теперь открывает File Location Calculator и в нем нашу лабораторную крыску. Вводим файловое смещение и жмем Calculate.

    [​IMG]

    Получаем значение: 40C000.

    Теперь собственно модификация кода...

    Открываем модифицированное приложение в Olly Debugger. Я уже нашел место в коде, где происходит получение строки идентификатора: 40410D. Замечаем, что полученная строка находится по адресу: 148B78:

    [​IMG]

    Сейчас нам нужно внедрить процедуру копирования нашей строки в нужное место и вызвать ее, не испортив остального кода. В Please login or register to view links об инжектировании кода в чужое приложение этот процесс подробно описан. Но я повторю вам основные моменты:

    1 Найти место, куда вставить нашу процедуру;
    2 Команды, которые будут на месте вызова процедуры перенести в код процедуры.


    Ищем место для внедрения процедуры

    Найти его довольно таки просто по повторяющимся одинаковым байтам. Обычно такие места можно найти ближе к концу программного кода. Это могут быть либо 0000, либо CCCC. Но их должно хватать.

    [​IMG]

    Внедряем процедуру

    Выделяем как можно больше пустых команд и жмем клавишу Пробел. Поочередно в появившемся окошке вводим команды, согласно первому исходному коду в статье Manhunter'а:

    Код
    pusha
    cld
    mov edi,[lpDst]
    mov esi,[lpSrc]
    mov ecx,[dSize]
    push ecx
    shr ecx,2
    rep movsd
    pop ecx
    and ecx,3
    rep movsb
    popa
    ret



    Получилась такая вот картина (замечаем, что процедура начинается с адреса 40435C):

    [​IMG]

    Вставляем вызов процедуры

    Вставлять вызов мы будем по адресу: 40410D. А присваивание указателя на строку в регистр EDX мы допишем в нашу процедуру.
    Итак, запоминаем код, который будем менять, выделяем строчку, жмем пробел и пишем:

    [​IMG]

    Теперь переходим в конец процедуры и немного ее модифицируем.

    [​IMG]

    Собственно, модификация закончена.

    Сохраняем все изменения в файл, и пробуем его запустить.

    ADDENDUM


    Получился небольшой облом) Делаем небольшое исправление:

    [​IMG]

    Дело в том, что вместо прямого адреса здесь лучше было указать относительный.

    Сохраняем изменения, запускаем файл, проверяем чужой ключ. Модификация окончена!

    [​IMG]

    ________________________________________________________________________________
    ________________________________________________________________Автор: Владимир Мефисто

    (с) эксплоитЭ.ин
     
    • Like Like x 8
    Метки:
  2. Avenger

    Avenger Гость

    Мефисто с xaker.name написал, хорошая статья.
     
  3. max46

    max46

    Регистрация:
    18 окт 2012
    Сообщения:
    123
    Симпатии:
    26
    Спасибо,мне как раз нужно её применить,будит)
     
  4. Lex

    Lex

    Регистрация:
    10 дек 2012
    Сообщения:
    56
    Симпатии:
    34
    Познавательно, спасибо!
     
  5. Prince

    Prince

    Регистрация:
    14 май 2012
    Сообщения:
    448
    Симпатии:
    231
    Спасибо, раньше бы такую статью, т.к. было 2 программы привязаны к моему компьютеру!
     
  6. Agulzex

    Agulzex

    Регистрация:
    23 окт 2012
    Сообщения:
    411
    Симпатии:
    375
    ;)можно и по легче отвязать. Но все равно статья норм
     
  7. Molodoy

    Molodoy Гость

    Шо за замуты? Нопаем цмпшку и джнз за ней. ВСЁ ЙОБА! ЧТО ЗА ЗАМУТЫ?!
     
  8. Avenger

    Avenger Гость

    Ога, так не интересно.
     

Поделиться этой страницей

Загрузка...