Этот сайт создан как клуб русификаторщиков. Для нас существуют три основных правила.
1. Мы никому и ничего не должны!
2.Один пришедший на сайт толковый русификаторщик дороже всех пользователей.
3. Мы делаем русификаторы для своего сайта, но в оригинале ими могут пользоваться все в интернете.
Спасибо, что разъяснили свою позицию, а то мне стало неловко, отнимаю у людей время. Я то пенсионер, вот и развлекаюсь... В последнее время мне стало не интересно просто переводить программу, важно, чтобы возникали сложности - крякозяблики, не исправимые без вмешательства в код программы и другое подобное. Собственно со съемом защиты кода я встречался, но там обошлось малой кровью. Перевод строк в главном окне программы, если не превышать размер оригинала, работает нормально. Но если перевести подсказку к кнопкам "Start", "Pause", то подсказка отображается правильно, но приложение не работает. Переводил непосредственно в шестнадцатеричном редакторе. После перевода в Radialix приложение не работает. Если вручную добавить секцию в конец файла - приложение работает, но если изменить ссылку в отладчике или шест. редакторе , то приложение не работает. (любое изменение кода в файле приводит к не работоспособности, если изменить код в отладчике после загрузки, то все нормально)
1. Программа создает копию самой себя в памяти. 2. Вычисляет хеш файла (или процесса ?). 3. Затем вычисляет хеш каждой секции в файле. 4. На базе полученных хешей (8 значений, релокации не учитываются) вычисляет общий хеш. 5. Сравнивает значения хешей файла и общего по секциям. 6. Если все ок, дешифрует и перезаписывает криптованный участок кода. 7. Наконец запускает свою модифицированную копию из памяти.
По ходу операций с хешами выполняются еще дополнительные проверки с установкой флагов валидности, поэтому простое исправление условий перехода не работает.
По виду хеши походят на MD5 (длина 32 символа), но это что-то другое или какая-то самопальная дурь. Дальнейшая инфа на базе файла WinAPIOverride64.exe, версия 6.6.5, CRC32=8869C3AD (отладчик x64dbg, ОС Windows 10 x64).
Все хеши вычисляются в функции по адресу 00007FF68D7D0397 (@10F797). Валидный хеш исполняемого файла - A357D3FECB10F60D36B54C61972245C0.
Общий хеш вычисляется по адресу 00007FF68D6E3C0B (@2300B) и далее идет сравнение хешей. Причем, если бряк по этому адресу включен, то общий хеш вычисляется неправильно (программа не работает). Если бряк отключить, то все ок (программа работает). Я первый раз с такой хренью сталкиваюсь и как это бороть без понятия. Может какие настройки в отладчике надо изменить? Чтение криптованного участка кода происходит по адресу 00007FF68D6D02F0 (@F6F0).
Также все ключевые строки, по которым можно определить важные места в коде и начать раскручивать алго в обратном направлении, зашифрованы. Но это легко определяется, именно с них я начал ковыряние в коде. Строки представляют собой хрень вида: "9z2S#~_Pf57UEe7+Zi5R$&"lHlGTu!&wzv". И им подобные.
В общем поковыряйте пока, может кто еще подойдет. У меня пока больше никаких мыслей, беру отгулы.
На сайте версия программы 6.6.6. Что-то стремно эту версию у себя запускать.
Сейчас я пробую в первую очередь снять защиту от трассировки, от бряков и в целом от отладчика. Иначе не получается отследить логику программы. Сложность в том, что в файле сохранить изменения нельзя, приходится при каждом запуске изменять код в отладчике. Заметил, что аппаратную контрольную точку программа не замечает (или делает вид), пытаюсь отследить разницу в выполнении программы при установке аппаратной и обычной контрольной точки Признаюсь, моя активность значительно снизилась, чему способствует изучение методов защиты программ...
пытаюсь отследить разницу в выполнении программы при установке аппаратной и обычной контрольной точки
Зачем? Берите мои данные патча и переводите. Сильно не гонял, но после перевода строк в коде работает.
Цитата: NNK_RTR
моя активность значительно снизилась, чему способствует изучение методов защиты программ...
Сколько на свете программистов, столько и способов защиты. Каждый создает их по своему, исходя из знаний и опыта. Если хотите разобраться с этой программой, начните со способов выявления отладчика, а именно: как программно можно определить, что программа запущена под отладчиком. Например, вызвать функцию IsDebuggerPresent и т.д.
Познакомиться с разнообразием защит можно на примерах ManHunter в его блоге Темная сторона Силы (это не реклама). Есть простые, есть сложные. В данной же программе очень не простая защита, особенно для новичка.
Хотите сказать, что если применить ваш патч и сохранить изменения на диске программа работает? Тогда подробней.
Сохраняйте промежуточные патчи
После сохранения изменений на диск программа не работает, поэтому я вынужден изменять код непосредственно в отладчике после загрузки приложения. Разумеется, я не делаю этого каждый раз вручную - использую многострочный ассемблер (плагин) для сохранения и восстановления изменений
Цитата: Krig
выявления отладчика
С отладчиком программа борется весьма активно и разными способами. В том числе, непосредственно с ollydbg - выявляет его наличие. Проверяет время выполнения некоторого участка кода, проверяет флаг ловушки (TF), причем хитрым способом: PUSHFD ... POP EAX Причем первая команда может быть далеко от второй и в промежутке могут быть другие команды изменяющие стек или другие флаги, в том числе команды CALL и RET. Впечатление, что программист, кроме использования некоторых стандартных алгоритмов, "запутывал" программу вручную.
Сообщение отредактировал NNK_RTR 2 апреля 2019 - 16:05
Дальнейшая инфа на базе файла 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
Стыдно конечно, но я никогда не встречался с подобной записью. Что это? Шестнадцатеричный дамп?
Да че, стыд? Я тоже не все знаю и понимаю, сижу порой на форумах, читаю, читаю и нифига не понимаю... Как там Ленин говорил: "Учится, учиться и еще раз учиться!" Да, это последовательность байт для поиска в шестнадцатеричном редакторе. Сверху исходная последовательность, а снизу показаны байты на замену. Символами || над исходной последовательностью указаны байты, которые при поиске в шестнадцатеричном редакторе нужно заменить на маску, т.е. вместо этих конкретных байт могут быть какие-угодно байты, поэтому при поиске их не нужно учитывать. Слева от байт замены написана версия файла программы. Открываете файл нужной разрядности. Вводите в поиске последовательность байт, находите её и заменяете соответствующие байты. Потом сохраняете изменения в файле. Если вам трудно или ничего не понятно, скажите, я вам предоставлю готовые файлы.