Sevapp
и кто это вообще
Anonymous
Sevapp
_>Death.server
Пхпшник походу
Ну да. Чекчи исходник. Написн на пхп (ну почти)
Andrey
Как же похорошел php при собянине...
Во флудилку шагом марш!
Aiwan \ (•◡•) / _bot
_>Death.server
Я ламер в асм)
_>Death.server
Щ серфаю TASM
_>Death.server
на 8086 0_0
Anonymous
Aiwan \ (•◡•) / _bot
Влада
Привет) нужно перевести строку в верхний регистр. То есть если символ меньше Z, то мы записываем его в строку. Если больше 'a', то мы вычитаем 32 и записываем в результатирующую строку. Но у меня почему-то не изменяюются. Подскажите, пожалуйста, как исправить
Влада
почему
Фотки нет.
И почитай про таблицу ASCII.
А именно, про значения символов.
Anonymous
Влада
писала так, работает конечно, но суть неправильная
Влада
Влада
Подскажите, пожалуйста, такая логика верна? Строка переводится в верхний регистр
Влада
vi'talij
кто сюда студентов впустил? зачем?
Во флудилку, блять!
bilka00
bilka00
Сессия пришла, кучу тупых вопросов в чат принесла
Sevapp
Eugene
Вы ещё тупых вопросов не видели, наверное :)
Хорошо ещё, когда человек сам делает и какой-то адекватный вопрос задаёт.
bilka00
bilka00
(нет)
bilka00
Всё блять. Началось.
Pol
Всем привет. Вопрос не совсем по языку. Допустим, у нас есть либа .so или .dll.
Нужно вот этот код
char * mystr = get_string();
поменять на этот
char * mystr = "my_string";
При этом исходников у нас нет. То есть нужно заменить значение, которое возвращает функция get_string, на своё.
Если говорить более конкретно: возможно ли в IDA, например, или любом другом дизассемблере изменить код так, чтобы вместо значения функции передавалась строка (которую мы должны вставить в код, в оригинале её нет), а после всё это собрать в dll, либо в so.
Это не в этот чат.
Pol
Можно.
Я так понимаю, такое легко провернуть?
Pol
У меня получалось только значения менять. Например, чтобы запустить игру в окне. Оказывается, можно и своего кода добавить.
Pol
Просто сейчас защиту пишу для Android приложения. Основной код в либах. В Java вообще ничего не проверяю. Я знаю, что условия подменить легко (if else). По сути один байт поменять. Поэтому от условий я избавился. Буду тогда проверять хеш основной либы, чтобы не пересобрали.
Andrey
Pol
В нативе я попробую получать этот хеш. Может, и проверять там буду.
Pol
Вообще основа защиты в проверке сертификата. Если он будет совпадать с оригиналом, то защита просто не сработает. Поэтому нужно, чтобы оригинальное приложение было перепаковано.
Andrey
Жаба реверсится прям совсем хорошо
Andrey
Pol
Жаба реверсится прям совсем хорошо
А либы скомпилированные разве нет? Выше написали, что легко подменить строку. Они могут подсунуть строку с сертификатом (ну хешем его верным) и всё.
Pol
Другое дело, что изменить код java и собрать apk можно за несколько минут.
kitsu
Pol
Andrey
Andrey
Все, все, никакого оффтопа
Pol
Я вот ещё читал где-то, что для защиты (там было про защиту программ на ПК) вставляют ассемблерные вставки в код на C/C++. Интересно, что можно такого написать, чтобы это вызвало сложности при изучении дизассемблированного кода?
Andrey
Eugene
Я вот ещё читал где-то, что для защиты (там было про защиту программ на ПК) вставляют ассемблерные вставки в код на C/C++. Интересно, что можно такого написать, чтобы это вызвало сложности при изучении дизассемблированного кода?
Есть разные приёмы защиты (и взлома). Чем они сложнее, тем меньше будет людей умеющих/желающих их сломать. Тем не менее, нужно понимать, что неломаемых защит нет, сломать можно всё, это надо понять (и простить). Вопрос в целесообразности. Если цена проги $1, а защита очень сложая, проще купить. Если ориентироваться на зарубежный рынок, там куда чаще покупают, чем ломают, нежели у нас.
Что касается ассемблерных вставок на C/C++, то можно и без них много чего сделать (а асм заменить интринсиками, когда очень надо, например).
Взлом/защита — это не такая тема, которую можно рассказать за 15 минут.
Eugene
Пофантазируем. Я не очень шарю в мобайле, но подозреваю, что там всё примерно так же, как в x86/Windows.
Вот ты будешь шифровать весь файл, но опять же, каким алгоритмом и где ты будешь хранить ключ? Да и потом, крякер может расшифровать файл (например, отладчиком) и дальше пошёл стандартный крякинг.
Может возникнуть вопрос: чтобы крякнуть и сохранить крякнутый код, нужно же зашифровать его, что при сложном и нестандартном алгоритме шифрования довольно геморно? Необязательно. Можно пропатчить стандартный дешифровщик так, что он будет менять нужные байты после расшифровки. Либо он не будет расшифровывать, а будет тупо копировать код, который будет храниться сразу расшифрованным :)
Но в любом случае, лучше зашифроваться, т.к. это по крайней мере, усложнит крякинг и отпугнёт приличное кол-во кулхацкеров :)
Eugene
«Что можно такого написать, чтобы вызывать сложности?»
Обычно это антиотладочные приёмы, которые приводят либо в крэшу/зависанию/выходу, либо к неправильному поведению (например, файл неправильно расшифровался). Но современные крякерские средства умеют обнаруживать и правильно работать со многими такими приёмами. Антиантиотладка, так сказать :). Но опять же, это умеют не все. Какой-то % отвалится.
Andrey
Это какие средства? Ида, и гидра по-моему не могли такие штуки детектить автоматически
Eugene
Какие «такие»? Скажем, IsDebuggerPresent легко перехватывается и выдаёт нужный результат (есть какие-то плагины под Олю, к примеру).
Anonymous
привет
Pol
Пофантазируем. Я не очень шарю в мобайле, но подозреваю, что там всё примерно так же, как в x86/Windows.
Вот ты будешь шифровать весь файл, но опять же, каким алгоритмом и где ты будешь хранить ключ? Да и потом, крякер может расшифровать файл (например, отладчиком) и дальше пошёл стандартный крякинг.
Может возникнуть вопрос: чтобы крякнуть и сохранить крякнутый код, нужно же зашифровать его, что при сложном и нестандартном алгоритме шифрования довольно геморно? Необязательно. Можно пропатчить стандартный дешифровщик так, что он будет менять нужные байты после расшифровки. Либо он не будет расшифровывать, а будет тупо копировать код, который будет храниться сразу расшифрованным :)
Но в любом случае, лучше зашифроваться, т.к. это по крайней мере, усложнит крякинг и отпугнёт приличное кол-во кулхацкеров :)
Я шифровать точно не буду (если вы про код), опыта в этом деле нет. Мой код открыт. Могу только хеш проверять, не более.
Pol
К тому же, любая проверка ведь сводится к cmp
Pol
Заменняем один байт - и готово
JeisonWi
Тут недавно про радар/каттер говорили - вот, зарелизили
JeisonWi
https://twitter.com/r2gui/status/1208106040954359808
Eugene
Заменняем один байт - и готово
Проверку можно делать хоть 10 раз в разных местах разными алгоритмами (в т.ч., например, по таймеру через 5 минут от начала, по первому тапу и т.д.).
А что, нормальных протекторов нет под Андроид? Чтоб не изобретать самому велосипед.