Исследование программы (написание кейгена)

Тема в разделе "WASM.RESEARCH", создана пользователем Searcher, 28 окт 2004.

  1. Searcher

    Searcher New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2004
    Сообщения:
    24
    Может программу кто сможет посмотреть? Если что, то выковырянный сетапник лежит тут или тут (185 кб). Может профессионалы смогут помочь? Хотя бы показать, от чего следует отталкиваться.
     
  2. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Хотя бы показать, от чего следует отталкиваться.



    Тебе это уже раз 20 сказали. Просто ты в упор ничего не хочешь видеть. Я тебе на пальцах покажу. По пунктам, как для особо одаренных!



    1) Взять иду.

    2) Наложить сигнатуры для твоего языка

    3) Обозвать все параметры

    4) Перевести код в ЯВУ-вид - для этого последовательно переписывать процедуры, добиваясь при перекомпиляции идентичности с исходным ассемблерным кодом

    5) Когда алгоритм восстановлен - реверсировать его.

    6) Идти пить пиво
     
  3. Funbit

    Funbit Member

    Публикаций:
    0
    Регистрация:
    13 апр 2003
    Сообщения:
    92
    Адрес:
    Russia
    Searcher

    скачать твой файлик мне не удалось,

    в любом случае мне выдается только warning.php

    (даже после нажатия на warning.php?url=ofp-volgograd.best-host.ru/setup.rar&get=349)
     
  4. Searcher

    Searcher New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2004
    Сообщения:
    24
    Вот еще одна ссылка (исправлено)

    volodya

    К сожалению, с Идой работать не умею, использую СофтАйс, а то бы с радостью. :dntknw:
     
  5. gloom

    gloom New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2004
    Сообщения:
    11
    ндя, файл размером 0 байт скачал... вопщем наговорил уйму всего, кода немеряно привёл, асм не знает, архив нормально выложить не может,...
     
  6. Searcher

    Searcher New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2004
    Сообщения:
    24
    Последнюю ссылку поправил (вина была хостера, а не моя, что не скачивалось), теперь две ссылки работают. По прежнему просьба в силе, если кто может помогите хоть советом, что делать дальше (я многого как вы не знаю, но стараюсь все понять).
     
  7. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    К сожалению, с Идой работать не умею

    но стараюсь все понять



    да? это ты так стараешься?
     
  8. Searcher

    Searcher New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2004
    Сообщения:
    24
    volodya

    Поставил Иду Про v4.5.0.762, дизассемблировал в ней сетапник, частично принцип работы Иды понял (что она интерактивнее представляет информацию огромный плюс), но пока слова



    для меня все еще звучат немного страшновато. :) Но все равно спасибо.

    Ищу материал по Иде, читаю Криса и пр. Работаю дальше.
     
  9. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    2 и 3 придут после определенной работы. над 4 придется подундохаться, но дорогу осилит идущий :)
     
  10. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Searcher



    На самом деле можно и через SoftICE.

    Надо аккуратненько "прошагать" по

    тем программам, которые ты тут приводил,

    и увы по всем подпрограммам, которые они вызывают

    и понять, что они делают. Потом записать

    этот алгоритм на языке поближе к человеческому :)

    ( Си ,например) и думать, как его обратить

    (реверсировать).

    А сигнатуры, если я правильно из теории

    понял это такие "волшебные цифири", которые

    заставляют IDA вместо

    push A push B call 41xxxxxxx

    рисовать FunADD (A,B)

    Но то, что 41ххххх - это ADD, ты должен сам

    сначала понять. Кстати, IDA умеет рисовать

    дерево вызова подпрограмм, и тебе придется начать

    с нижних веточек(она его рисует вверх ногами).

    Если дерево "глыбокое",

    то я тебе не завидую :)
     
  11. man0war

    man0war New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    85
    Адрес:
    Albania
    А почему бы тебе Searcher не использовать

    TMG Ripper Studio ? Программа для тех , кому сложно

    разобраться в механизме генерации валидного ключа.
     
  12. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Если она действительно умеет вырезать

    все дерево подпрограмм, тогда да.

    А вот мне может пригодиться - мне надо

    вытащить один модуль.
     
  13. Searcher

    Searcher New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2004
    Сообщения:
    24
    TMG Ripper Studio?

    Попробую и это, а то все так вожусь, да вожусь с этим сетапником. :dntknw:

    Может как то можно часть ассемблерного кода, отвечающего за проверку вырезать и вставить в язык высокого уровня? (например через asm...end; в Дельфи), а потом изучить?
     
  14. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    А шо Дельфи добавит комментарии к ассемблерной вставке? :))

    Имхо, лучше отладчика тебе мало что поможет
     
  15. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Searcher







    + глаза и еще кое-что

    Увы свою голову мы тебе дать не можем.

    Но не переживай, много лет назад мы тоже

    в страхе смотрели на хекс... и спросить

    не у кого было.

    В настоящее время мне неплохо помогает

    принцип "черного ящика" : вызываешь программу

    и смотришь, что она поменяла во входных

    данных и что появилось в регистрах. Главное

    не пропустить важное и не погрязнуть в мелочах.

    Но для этого изучения одной программы недостаточно.

    Лучше для начала потренироваться на понимании

    текстов чужих программ, написать и отладить

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

    Всех моих знакомых до сих пор "бросает в дрожь",

    когда я при них смотрю хекс. А я им честно

    говорю : я тоже почти ничего не понимаю

    там, но иногда встречаются важные места !

    И это после 30 лет работы с хексом :)
     
  16. buykim

    buykim New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2011
    Сообщения:
    2
    Searcher
    Очень хотелось бы узнать о результатах вскрытия данного пациента (сетупа) или может сразу ссылку где скачать "создателя правильного ключа" к нему :)
     
  17. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    buykim
    Почти 7 лет прошло. Не думаю, что этот топик лучшее место для поисков...
    Если зайти в профиль Searcher, увидим что с 2005 он здесь не появлялся.
    Глас вопиющего в пустыне :)
     
  18. buykim

    buykim New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2011
    Сообщения:
    2
    Спасибо за коментарий. Очень жаль, что инициатора топика нет, потому как мне эта инфа параноидально нужна.
     
  19. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Нашёл тему семилетней давности, решил выкопать.
    Сразу скажу, что, поскольку к моему кейгену для Zuma приведённый бинарь отношения не имеет, то ничего не обещаю.
    Но всё же попробую закрепить первый успех.

    В общем, что удалось накопать за два часа:
    Функция 4052DE служит для перевода строки с паролем в 15-байтное число по следующему алгоритму:
    1. прочитать 8 символов из пароля.
    2. перевести их в верхний регистр.
    3. все O заменить на 0, все I — на 1.
    4. вычислить их позиции в таблице 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ, отсчёт с нуля (в дальнейшем буду их обозначать как C0, C1, … C7).
    5. если в таблице нет нужного символа — ключ сразу полагается неправильным.
    6. сгенерить 5-байтное число по принципу C0 << 0 | C1 << 5 | C2 << 10 | C3 << 15 | C4 << 20 | C5 << 25 | C6 << 30 | C7 << 35.
    7. полученное 5-байтное число записать в буфер.
    8. повторить [1] ещё 2 раза.

    Это, кстати, объясняет, почему символов в пароле 24, а не 25.
    Хотя могли бы и добавить один незначащий, просто для эстетики.

    А вот далее идёт какая-то зубодробительная функция шифровки, которая оперирует тремя буферами, перемножая, ANDя и XORя их попеременно.
    Порядок всегда разный, и в ассемблерном представлении я в этой галиматье точно не разберусь — придётся переписывать на С.

    Так или иначе, на выходе этой функции, если ключ был верен, должна оказаться строка "Flashpoint",0,0,0,0,0,0.

    Спасибо, у меня всё =)
     
  20. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Нда, шифр мне совершенно не знаком.

    Подскажите, пожалуйста, кто знает — что это за алгоритм, у которого допустим 160-битный ключ, шифруемой ячейкой выступает слово, и инициализация (т.к. до основной части, где должен применяться ключ, я ещё просто не дошёл) происходит в 5 проходов:
    на каждом из проходов выбирается двойное слово с 0й, 1й, 2й, 3й или, соответственно, 4й позиции, из него выделяются младшее и старшее слово, и вычисляются вот такие значения (U0 и L0 — это верхнее и нижнее слова из DWORD`а, выбранного в данном проходе, Ui и Li — это тоже верхнее и нижнее, но уже последовательно для i`го DWORD`а, i = [o]0,4[/o], т.е. в цикле):



    D ::= 0;

    @цикл:

    C ::= U0×Li + L0×Ui + U{U0×Ui}
    B ::= L0×Li + 10000h×(C` > FFFFFFFFh)
    C ::= L{U0×Li + L0×Ui + U{U0×Ui}}×10000h + L{U0×Ui} + D
    D ::= U{U0×Li + L0×Ui + U{U0×Ui} + B + 1h×(C` > FFFFFFFFh)
    RES ::= C

    LOOP @цикл

    RES ::= D



    В вышеприведённом алгоритме на все переменные, согласно машинной арифметике, действует переполнение.
    На все, кроме C` — это, фактически всё та же C, только с дописанным к ней вперёд флагом CF, чтобы в случае чего она могла превышать FFFFFFFFh.
    Да, забыл уточнить — RES это отдельная строка, к началу первого прохода забитая нулями.

    [UPD:]
    Судя по вопиющим руссицизмам в якобы-англоязычном интерфейсе программы, очевидно, что программу писали those goddamn Russians соотечественники.

    В связи с чем вопрос про алгоритм несколько уточняю: не может ли это быть каким-то ГОСТовским шифром?

    PS.
    Простите за сумбур — спатьхачунимагу =(