Загрузчик приложений
Может кто-то знает ссылку на статью, в которой подробно описывается работа загрузчика, или сам может 
  
- 
  Спасибо, что разъяснили свою позицию, а то мне стало неловко, отнимаю у людей время.
 Я то пенсионер, вот и развлекаюсь...
 В последнее время мне стало не интересно просто переводить программу, важно, чтобы возникали сложности - крякозяблики, не исправимые без вмешательства в код программы и другое подобное. Собственно со съемом защиты кода я встречался, но там обошлось малой кровью.
 Перевод строк в главном окне программы, если не превышать размер оригинала, работает нормально. Но если перевести подсказку к кнопкам "Start", "Pause", то подсказка отображается правильно, но приложение не работает.
 Переводил непосредственно в шестнадцатеричном редакторе.
 После перевода в Radialix приложение не работает. Если вручную добавить секцию в конец файла - приложение работает, но если изменить ссылку в отладчике или шест. редакторе , то приложение не работает. (любое изменение кода в файле приводит к не работоспособности, если изменить код в отладчике после загрузки, то все нормально)24 марта 2019 - 17:10 / #11
- 
  Цитата: NNK_RTRНо если перевести подсказку к кнопкам "Start", "Pause", то подсказка отображается правильно, но приложение не работает.
 Хм, действительно. Перевел только подсказку "Start" и программа больше не работает, точнее кнопка пуска. Нужно ломать...24 марта 2019 - 17:43 / #12
- 
  NNK_RTR, возможно вам будет интересно следующее.
 1. Программа создает копию самой себя в памяти.
 2. Вычисляет хеш файла (или процесса ?).
 3. Затем вычисляет хеш каждой секции в файле.
 4. На базе полученных хешей (8 значений, релокации не учитываются) вычисляет общий хеш.
 5. Сравнивает значения хешей файла и общего по секциям.
 6. Если все ок, дешифрует и перезаписывает криптованный участок кода.
 7. Наконец запускает свою модифицированную копию из памяти.
 По ходу операций с хешами выполняются еще дополнительные проверки с установкой флагов валидности, поэтому простое исправление условий перехода не работает.
 По виду хеши походят на MD5 (длина 32 символа), но это что-то другое или какая-то самопальная дурь.
 Дальнейшая инфа на базе файла WinAPIOverride64.exe, версия 6.6.5, CRC32=8869C3AD (отладчик x64dbg, ОС Windows 10 x64).
 Все хеши вычисляются в функции по адресу 00007FF68D7D0397 (@10F797).
 Валидный хеш исполняемого файла - A357D3FECB10F60D36B54C61972245C0.
 Валидные хеши секций:.text - 1DD072B0387A09061918D61696FE941B .rdata - 3ABBD1F6128786AF3972E5D90192CB75 .data - 30BDECB183524DF42B30C4D5C1353087 .pdata - 70D727DDA503543747FE22C857C76DA9 text - 04ED7D5700CF692B0EBE80EAC3E4A356 data - 502BB638BDA76A612230EAE1E62B70A6 .tls - FE81C98ECB23F4A1068BBE63C0A71096 .rsrc - F1775F9DEE9D57E2D070C94446A4F346
 Общий хеш вычисляется по адресу 00007FF68D6E3C0B (@2300B) и далее идет сравнение хешей. Причем, если бряк по этому адресу включен, то общий хеш вычисляется неправильно (программа не работает). Если бряк отключить, то все ок (программа работает). Я первый раз с такой хренью сталкиваюсь и как это бороть без понятия. Может какие настройки в отладчике надо изменить?
 Чтение криптованного участка кода происходит по адресу 00007FF68D6D02F0 (@F6F0).
 Также все ключевые строки, по которым можно определить важные места в коде и начать раскручивать алго в обратном направлении, зашифрованы. Но это легко определяется, именно с них я начал ковыряние в коде. Строки представляют собой хрень вида: "9z2S#~_Pf57UEe7+Zi5R$&"lHlGTu!&wzv". И им подобные.
 В общем поковыряйте пока, может кто еще подойдет. У меня пока больше никаких мыслей, беру отгулы.
 На сайте версия программы 6.6.6. Что-то стремно эту версию у себя запускать. 27 марта 2019 - 00:46 / #13 27 марта 2019 - 00:46 / #13
- 
  1 апреля 2019 - 03:23 / #14
- 
  Сейчас я пробую в первую очередь снять защиту от трассировки, от бряков и в целом от отладчика. Иначе не получается отследить логику программы. Сложность в том, что в файле сохранить изменения нельзя, приходится при каждом запуске изменять код в отладчике. Заметил, что аппаратную контрольную точку программа не замечает (или делает вид), пытаюсь отследить разницу в выполнении программы при установке аппаратной и обычной контрольной точки
 Признаюсь, моя активность значительно снизилась, чему способствует изучение методов защиты программ...1 апреля 2019 - 10:09 / #15
- 
  Цитата: NNK_RTRпытаюсь отследить разницу в выполнении программы при установке аппаратной и обычной контрольной точки
 Зачем? Берите мои данные патча и переводите.  
 Сильно не гонял, но после перевода строк в коде работает.Цитата: NNK_RTRмоя активность значительно снизилась, чему способствует изучение методов защиты программ...
 Сколько на свете программистов, столько и способов защиты. Каждый создает их по своему, исходя из знаний и опыта. Если хотите разобраться с этой программой, начните со способов выявления отладчика, а именно: как программно можно определить, что программа запущена под отладчиком. Например, вызвать функцию IsDebuggerPresent и т.д.1 апреля 2019 - 16:37 / #16
- 
  Берите мои данные патча
 Хотите сказать, что если применить ваш патч и сохранить изменения на диске программа работает? Тогда подробней.Сохраняйте промежуточные патчи
 После сохранения изменений на диск программа не работает, поэтому я вынужден изменять код непосредственно в отладчике после загрузки приложения. Разумеется, я не делаю этого каждый раз вручную - использую многострочный ассемблер (плагин) для сохранения и восстановления измененийЦитата: Krigвыявления отладчика
 С отладчиком программа борется весьма активно и разными способами. В том числе, непосредственно с ollydbg - выявляет его наличие.
 Проверяет время выполнения некоторого участка кода, проверяет флаг ловушки (TF), причем хитрым способом:
 PUSHFD
 ...
 POP EAX
 Причем первая команда может быть далеко от второй и в промежутке могут быть другие команды изменяющие стек или другие флаги, в том числе команды CALL и RET. Впечатление, что программист, кроме использования некоторых стандартных алгоритмов, "запутывал" программу вручную.Сообщение отредактировал NNK_RTR 2 апреля 2019 - 16:052 апреля 2019 - 11:16 / #17
- 
  Цитата: NNK_RTRТогда подробней.
 О чем?2 апреля 2019 - 22:45 / #18
- 
  Цитата: KrigОдин из вариантов обхода
 Стыдно конечно, но я никогда не встречался с подобной записью.
 Что это? Шестнадцатеричный дамп?Сообщение отредактировал NNK_RTR 3 апреля 2019 - 10:343 апреля 2019 - 10:25 / #19
- 
  Цитата: NNK_RTRДальнейшая инфа на базе файла WinAPIOverride64.exe, версия 6.6.5, CRC32=8869C3AD (отладчик x64dbg, ОС Windows 10 x64).
 Это означает, что
 1) Операционная система у меня Windows 10, 64-разрядная.
 2) Разбирал я 64-разрядную версию 6.6.5 программы, а именно файл WinAPIOverride64.exe.
 3) Анализ выполняю в отладчике x64dbg.Цитата: NNK_RTRЧто говорит символ @, я подумал, что это и есть смещение в файле
 Да, это смещение, но в файле WinAPIOverride64.exe, версия 6.6.5.Цитата: NNK_RTRСтыдно конечно, но я никогда не встречался с подобной записью.
 Что это? Шестнадцатеричный дамп?
 Да че, стыд? Я тоже не все знаю и понимаю, сижу порой на форумах, читаю, читаю и нифига не понимаю... Как там Ленин говорил: "Учится, учиться и еще раз учиться!"
 Да, это последовательность байт для поиска в шестнадцатеричном редакторе. Сверху исходная последовательность, а снизу показаны байты на замену. Символами || над исходной последовательностью указаны байты, которые при поиске в шестнадцатеричном редакторе нужно заменить на маску, т.е. вместо этих конкретных байт могут быть какие-угодно байты, поэтому при поиске их не нужно учитывать. Слева от байт замены написана версия файла программы. Открываете файл нужной разрядности. Вводите в поиске последовательность байт, находите её и заменяете соответствующие байты. Потом сохраняете изменения в файле. Если вам трудно или ничего не понятно, скажите, я вам предоставлю готовые файлы.4 апреля 2019 - 00:34 / #20
Powered by Bullet Energy Forum
 Гость
Гость




 
       
       
      