Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55

Шифровка числа и борьба с IDA

28.11.2017, 16:35. Показов 4118. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня уже есть алгоритм для шифровки строк/чисел.
Чтобы этот алгоритм работал, ему нужно число x, это число x я и хочу зашифровать.
Подскажите как это можно сделать?

Я пока придумал лишь это: создать МНОГО функций с перенаправлениями и математическими операциями, которые в итоге дают это число x, с надежой что IDA парень устанет от этих перенаправлений и бросит, но зная парня, он не бросит =) А читерская F5 кнопка в IDA показывает верный псевдокод, который я не знаю как можно обмануть.

Т.е. у меня 2 вопроса.

1. Как зашифровать одно число
2. Как обмануть IDA, чтобы он выдавал псевдокод (F5) с логическими ошибками, т.е. выдавал неверные данные

Добавлено через 7 минут
3. Можно ли как-то хитро вызвать функцию, чтобы IDA неверно определила адрес и перекинула в какой-то левый участок кода?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2017, 16:35
Ответы с готовыми решениями:

Шифровка и расшифровка числа
Доброго дня, сделал шифровку числа, а теперь нужно его расшифровать. Как это сделать? var Form1: TForm1; alphabet: array of...

Ida pro
таварищи подскажите де добыть сей софт(ida pro) с кряком google шо-то не помог

Декомпиляция в IDA
Добрый день! Читаю мануал по IDA - пишут, что F5 декомпилирует функцию... Но мало того, что никакой реакции на F5, дк я даже не могу...

13
28.11.2017, 16:44

Не по теме:

Это тема для начинающих?

0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
28.11.2017, 16:53
Могу точно сказать, что Hex-Rays Иды плохо работает с volatile переменными.
Т.е. Если у вас такая объявлена и если у вас подряд идут несколько записей или обращений к одной переменной, то Псевдокод покажет только последнее. Это вам 1 наводка.
Второе - Ида заточена под стандартные сишные вызовы. Если вы напишите и скомпилируете код каким-нибудь Делфи, я думаю, это доставит проблем разбирающему.

Лучшая защита - это хранение ключа на отдельном сервере, на который посылаются данные для расшифровки, а в ответ принимаются уже расшифрованный результат

Либо пишите на чистом ассемблере. )

Потом есть еще такая тема, как перекрытие секторов. Т.е. в PE-секции задаете адреса секторов данных и кода так, чтобы они наползали друг на друга. Тогда в секции данных можно разместить самомодифицирующийся код. )
Такой код уж Идовский парень точно не осилит.

Добавлено через 8 минут
Еще можно попробовать зациклить какой-либо вызов таблицы релокации на самого себя. Если в Иде нет защиты от этого - она просто повиснет на этапе анализа кода.
2
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55
28.11.2017, 16:55  [ТС]
Спасибо за советы, попробую [ то, что я смог понять =) ]

Цитата Сообщение от jahdjkhasjdhjah Посмотреть сообщение
Лучшая защита - это хранение ключа на отдельном сервере, на который посылаются данные для расшифровки, а в ответ принимаются уже расшифрованный результат
Да и тут минусы, эти расшифрованные данные можно перехватить и потом подставить где надо.
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
28.11.2017, 16:59
Так вы их по vpn-у передавайте. )

Добавлено через 1 минуту
Вообще в кибербезопасности нет понятия абсолютной защиты. Есть понятие такой защиты, на взлом которой требовалось бы безмерное количество времени, что делало бы взлом неэффективным.
Типа взломали, а данные неактуальны уже лет как 5
1
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55
28.11.2017, 17:04  [ТС]
Что-то с volatile не получается =\

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
int MyFunc(int a)
{
    volatile int x = 1;
    volatile int y = 1;
    return a + x + x + y + y;
}
 
void test()
{
    int (*p)(int) = MyFunc; // читал что лучше вызывать через указатель, но эффекта не вижу, так же в 2 шага находит функцию.
 
    printf("-> %d\n", p(2));
}
IDA показала верный результат:

C++ (Qt)
1
2
3
4
int __cdecl sub_413840(int a1)
{
  return a1 + 4;
}
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
28.11.2017, 17:11
Ну, она объединяет.

Попробуйте использовать какой-то системный регистр, который бы при обращении как-то модифицировал значение.

Добавлено через 1 минуту
Известным образом модифицировал. )

Добавлено через 2 минуты
Т.е. если у вас идет чтение volatile переменной
C++
1
2
3
4
5
volatile int a;
int b;
b = a;
b = a;
b = a;
и при этом при каждом чтении a меняется, то ИДа покажет только
C++
1
b = a;
Добавлено через 1 минуту
Поменять ее сами незаметно для Иды вы не сможете. Программно. А вот заюзать какой-то системный регистр... Да хоть использовать регистры сопроцессора
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.11.2017, 17:15
Цитата Сообщение от jahdjkhasjdhjah Посмотреть сообщение
что Hex-Rays Иды плохо работает с volatile переменными.
Скорее наоборот, т. к. для нее не будет оптимизации.

Добавлено через 3 минуты
Можно придумать какую-нибудь простенькую модель вычислительной машины и реализовать ее, а внутри уже в виде своего байт-кода (под эту "машину") сам алгоритм шифрования. Понять все это дела помощью дизассемблера будет не просто.
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
28.11.2017, 17:17
Ида ничего не занет о том, волатальные они или нет. И нигде в ее настройках для переменной нельзя этого указать.
Как раз таки Ида всегда оптимизирует
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
28.11.2017, 17:21
Цитата Сообщение от jahdjkhasjdhjah Посмотреть сообщение
Ида ничего не занет о том, волатальные они или нет.
Я бы удивился в обратном. Собственно и что?

Добавлено через 2 минуты
В любом случае все эти попытки забагать алгоритм генерации псевдокода спасут только от пионеров.
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
28.11.2017, 17:25
Цитата Сообщение от shmkv Посмотреть сообщение
Собственно и что?
Не разводите холивар.
Шифровка числа и борьба с IDA
Цитата Сообщение от shmkv Посмотреть сообщение
В любом случае все эти попытки забагать алгоритм генерации псевдокода спасут только от пионеров.
Согласен.
но вот предложенный вами вариант промежуточного байт-кода или мой вариант с самомодифицирующимся кодом может доставить немало хлопот.

К тому же в задаче от ТС стоит обмануть Hex-Rays, а не матерого cool-хацкера
0
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55
07.12.2017, 23:36  [ТС]
try catch можно использовать.
Если писать код в catch, то в f5 он не виден, нужно вручную ковырять код.
Есть еще варианты?

Цитата Сообщение от jahdjkhasjdhjah Посмотреть сообщение
Попробуйте использовать какой-то системный регистр, который бы при обращении как-то модифицировал значение.
Приведите пжалст пример кода, а то не совсем понятно.
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
08.12.2017, 11:00
Первое, что приходит на ум - использование напрямую команд MMX, SSE.
Вообще можно поискать аппаратное обеспечение, доступное рядовой программе и попытаться заюзать его.

Потом можно еще распараллелить код каким-нибудь хитрым образом. Использовать в нем какую-нибудь не стандартную синхронизацию. Да даже просто распарралеленый код анализировать уже намного сложнее.

Можно через какой-нибудь сокет отправлять данные самому себе и активно юзать их. Вряд ли IDA догадается сверять адреса клиента и сервера. + еще можно считывать в другом порядке, либо в другую структуру memset-ом. Так, чтобы размеры переменных были другими. Но общий размер сохранялся.
0
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 55
10.12.2017, 00:06  [ТС]
500 rub тому, кто первым даст c++ код, который позволит скрыть F5 псевдокод в IDA, чтобы парень был вынужден ковырять код в окнах IDA View-A и прочих, а не копировал всё из псевдокода. Я нашел лишь try и catch, если писать код внутри catch, то его псевдокод не выдает, но к сожалению он мне не подходит, т.к. на линуксе на одной версии игрового сервера с try catch происходит магия и они не работают как надо. Можно в ЛС.

Добавлено через 16 часов 56 минут
Никто? Жаль.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2017, 00:06
Помогаю со студенческими работами здесь

Поиск в Ida Pro
Добрый день! Извиняюсь если такой вопрос уже был но как в Ida Pro выполнить поиск по radiobutton? Допустим есть radiobutton и вывод на...

Поиск операнд в IDA
Задача такая, мне нужно найти в листинге к примеру операнд число 65??????, вместо кавычек могут быть любые числа, все что я знаю к примеру...

Поиск вызовов в IDA
Подскажите пожалуйста, как в IDA найти все участки кода, которые вызывают импортируемые функции? Сам список импорта нашел, но не...

IDA PRO and atmega2561
Кто нибудь добавлял описание atmega2561 в avr.cfg для IDA Pro? Сам добавил, вот только сомневаюсь, все ли верно. Вот может кому...

IDA 6.1 Ошибки с псевдокодом
Разбираюсь с ida 6.1. Пытаюсь разобраться с псевдокодом. Сначала била ошибку Decompilation failure: FFFFFFFF: wrong basic type sizes...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru