eXeL@B —› Вопросы новичков —› Как быстро сравнить 2 функции в IDA ? |
Посл.ответ | Сообщение |
|
Создано: 28 сентября 2016 15:19 · Поправил: olia64 · Личное сообщение · #1 Вопрос 1. 1. Дано два exe файла, в них 2 аналогичные функции, но они могут отличаться версиями или быть одинаковыми. 2. Как в IDA можно быстро сравнить эти фукнции? Типа левый клик посчитать хэш функции, calc->crc16 or md5 Скорее всего таких сложных приблуд в IDA нет, получается пункт3 3. Как снять дамп функции в IDA ? PS. сейчас делаю так, захожу в hex окно, начало функции - конец функции и save to file делаю. Потом приходится в hex редакторе notepad++ удалять вручную мусорные окончания неотносящиеся к области функции ( потому что копировать в hex окне можно кратно 16 байтам ) Вопрос 2. Уже сложнее. Как в одном одном exe заменить функцию аналогичной из другого exe ? Получается что нам нужен дамп нужной функции, каким то образом залить в свободный сегмент памяти и изменить CALL на нашу область? Что делать если функция вызывает группу других функции внутри себя и её аналоги в другом exe тоже могут отличаться. Суть вопроса в следующем. Дано: 1) Клиент-сервер 2) Пакет шифруется ключем и с начальным вектором IV потому что AES CBC и уходит на сервер. 3) На сервере пакет дешифруется уже неправильно. Притом что и ключ и начальный вектор дешифрации совпадают с зашифрованными на клиенте. Вопрос: 1) Могут ли не совпадать версии AES CBC функции шифрования? Или алгоритм 100% один вне зависимости от версии OpenSSL ? 2) Как узнать какая версия AES На сервере и на клиенте используется? Проверяю на сайте клиенскую шифрацию http://extranet.cryptomathic.com/aescalc Пакеты на клиенте шифруются корректно. На сервере дешифруются некорретно. PS: убедительно прошу помогать с ответами адекватных людей по теме вопроса без лишнего флуда, если вас мои вопросы новичка как то задеваю идите дальше... |
|
Создано: 28 сентября 2016 16:27 · Поправил: unknownproject · Личное сообщение · #2 Для вопросов по IDA есть отдельный тред. olia64 пишет: Как в одном одном exe заменить функцию аналогичной из другого exe ? Посчитать смещение относительно виртуального адреса и перезаписать N-ное кол-во байт.До этого сложно догадаться ? Ида для этой цели нужна ровно настолько, насколько обладает функционалом для нахождения пролога функции для замены. olia64 пишет: Что делать если функция вызывает группу других функции внутри себя и её аналоги в другом exe тоже могут отличаться. Они итак будут отличаться, как минимум адресом.Патчить, что еще делать. PS. Ну а самого "Вас" уже слишком много для форума, так что молитесь своим богам, чтобы не быть забаненным.10 дней на форуме и уже всех замандил. ----- TEST YOUR MIGHT |
|
Создано: 28 сентября 2016 16:31 · Поправил: redlord · Личное сообщение · #3 |
|
Создано: 28 сентября 2016 16:31 · Личное сообщение · #4 |
|
Создано: 28 сентября 2016 16:48 · Поправил: -=AkaBOSS=- · Личное сообщение · #5 olia64 пишет: 2. Как в IDA можно быстро сравнить эти фукнции? Типа левый клик посчитать хэш функции, calc->crc16 or md5 хэш тут слишком неэффективен. А разные компиляторы и режимы оптимизации свой отпечаток накладывают. Если есть эталонный код, проще отладчиком проверить входные-выходные данные. olia64 пишет: Как в одном одном exe заменить функцию аналогичной из другого exe Волшебных кнопок нет - только руками. Да, это трудоёмко. А так как речь идёт об AES, придётся еще патчить много констант - обращений к таблицам. Да и сами таблицы тоже заменять, для полной уверенности. Лучше не функцию пытаться заменить "вслепую", а разобраться что происходит. Возможно, как-то изменился заголовок принимаемого пакета, и данные интерпретируются неправильно. Я бы проверил на различия между: 1. тем что отсылает клиент 2. тем что получает сервер 3. тем что сервер отправляет на расшифровку |
|
Создано: 28 сентября 2016 18:21 · Личное сообщение · #6 unknownproject пишет: PS. Ну а самого "Вас" уже слишком много для форума, так что молитесь своим богам, чтобы не быть забаненным.10 дней на форуме и уже всех замандил. Что с тобой не так??? Русскими буквами попросил, если что-то не устрайвает кого-то в моем вопросе для новичков, просто молча пройти мимо или мне нельзя в принципе вопросы задавать? Я соблюдаю все правила и ограничение на кол-во тем для новичков. А ты нарушаешь правила форума, разводишь флуд и пытаешься унизить собеседника. Почему не забанят тебя, а должны как-то наказать меня??? Почему я в каждой теме прошу об одном, заканчивайте флудить, тролить и пытаться оскорбить ? PS: вообще очень хорошая штука личный черный список, такой чтобы пользователь из черного списка навсегда пропадал во всех темах, к сожалению это почти нигде не реализовано и приходится пилить свои подделки в виде плагинов для браузера по типу greasemonkey. Я решил полностью отключить шифрование на клиенте и сервере и перехожу к своему первому патчу Это проще чем изменить весь фреймворк AES.. -=AkaBOSS=- пишет: Волшебных кнопок нет - только руками. Да, это трудоёмко. А так как речь идёт об AES, придётся еще патчить много констант - обращений к таблицам. Да и сами таблицы тоже заменять, для полной уверенности. Лучше не функцию пытаться заменить "вслепую", а разобраться что происходит. Возможно, как-то изменился заголовок принимаемого пакета, и данные интерпретируются неправильно. Я бы проверил на различия между: 1. тем что отсылает клиент 2. тем что получает сервер 3. тем что сервер отправляет на расшифровку 1. проверил что отсылает. 2. проверил что приходит 3. отправляет на расшифровку всё то что ушло клиентом уже запакованое ( запакованое ушло всё правильно ), а распаковывается НЕПРАВИЛЬНО. И основной вопрос звучал так... Возможно ли что версии AES CBC отличаются? Таблицы S и раундовые ключи шифрования совпадают. Я что то пропустил или ВОЗМОЖНЫ разные версии AES CBC ? Кто нибудь знает ? OPENSSL 1.0 Отличается от других версии реализацией алгоритма? подозрение на разные версии Openssl |
|
Создано: 28 сентября 2016 18:41 · Личное сообщение · #7 olia64 Для начала перестань воспринимать ответы форумчан так, что они относятся к тебе высокомерно! Выглядит так, как будто ты обижен на то, что люди знают, а ты - нет. unknownproject пишет: Для вопросов по IDA есть отдельный тред Да не столько это к иде относится. По сравнению 2х функций: сделать это просто! нужно либо поискать плагин для иды (который может потянуть за собой и питон, поставить его не помешает), либо выделяешь в hex-представлении байты функции в обоих exe, сохраняешь в свои файлы, и в WinHex сравниваешь. Я - не любитель плагинов, ставить все подряд - потом не поймёшь из-за чего крашится ида(а была аналогичная ситуация с плагинами для студии). Добавлено спустя 4 минуты olia64 пишет: Возможно ли что версии AES CBC отличаются? Таблицы S и раундовые ключи шифрования совпадают. Мучают сомнения, что версии криптоалго одинаковые? - проверь пошагово(по раундам) в каждой версии клиента, запиши промежуточные результаты на листочек, сравни. Добавлено спустя 7 минут Проверь векторы инициализации (IV) Добавлено спустя 9 минут DenCoder пишет: и в WinHex сравниваешь Естественно, из-за смещений могут быть различия после 0xe8(опкод инструкции call) до 4х байт - не обращать внимания Добавлено спустя 10 минут А также глобальные переменные могут быть сдвинуты по адресам. ----- IZ.RU |
|
Создано: 28 сентября 2016 18:54 · Личное сообщение · #8 olia64 пишет: Возможно ли что версии AES CBC отличаются? 25b0_28.09.2016_EXELAB.rU.tgz - aes_dll.dll ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 28 сентября 2016 18:58 · Личное сообщение · #9 |
|
Создано: 28 сентября 2016 20:00 · Личное сообщение · #10 |
|
Создано: 28 сентября 2016 20:03 · Личное сообщение · #11 |
|
Создано: 28 сентября 2016 20:30 · Личное сообщение · #12 |
|
Создано: 28 сентября 2016 20:49 · Поправил: olia64 · Личное сообщение · #13 daFix пишет: olia64 Вероятность того что AES CBC отличаются в разных версиях ничтожно мала. Это стандарт и я ни разу не встречал модификаций алго в живых программах, копай выше. Возможно, буфер как-то ещё обрабатывается перед попаданием на расшифровку Спасибо, это то что я хотел услышать. Клиент шифрует и дешифрует правильно. При расшифровке на стороне сервера начинается какая то шляпа. Все таблицы аналогичны. IV аналогичный и aes ключ тоже Подозрение только на сам алгоритм, а разбирать его по полочкам в моем случае это надолго. Опыта не хватает. Попробую отключить шифрование вообще. В связи с этим возникает вопрос. В IDA -> Edit -> Patch program Меняю необходимую область байт на 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 Больше это размера патчить не даёт. Это проблема 1. если нада пропатчить 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 Прийдется 2 раза выполнять. Как просто выделить весь участок кода и заполнить его 90 ? Переключаюсь между text view и graph view в окне кода Проблема 2. Как быстро отменить патч в первоначальный вид? |
|
Создано: 28 сентября 2016 20:59 · Поправил: DenCoder · Личное сообщение · #14 olia64 пишет: Больше это размера патчить не даёт. Это проблема 1. Плагин Питон должен стоять. olia64 пишет: Как просто выделить весь участок кода и заполнить его 90 ? И это этот плагин позволяет. olia64 пишет: Проблема 2. Как быстро отменить патч в первоначальный вид? Когда выбираешь Edit->Patch program->Change byte, над эдитом видно оригинальные байты Добавлено спустя 5 минут daFix пишет: Вероятность того что AES CBC отличаются в разных версиях ничтожно мала У тс возможно и есть маловероятный случай )) Мне как-то за короткий промежуток времени попалось 6 различных модификаций блоуфиша ----- IZ.RU |
|
Создано: 28 сентября 2016 21:22 · Личное сообщение · #15 DenCoder пишет:Плагин Ida Patcher позволит обойти это ограничение. DenCoder , ты реально тут топ 1 в помощи новичкам. Побольше бы таких людей на форуме. Форум фактически мертвый, возможно как и наша страна Россия... Обсуждения стремятся к нулю. Я не жалуюсь, просто обидно как то. Полторы темы в день. Неужели нас так мало, господа? Все активные обсуждения на англо-ресурсах? |
|
Создано: 28 сентября 2016 23:05 · Поправил: dosprog · Личное сообщение · #16 |
|
Создано: 28 сентября 2016 23:32 · Личное сообщение · #17 |
|
Создано: 29 сентября 2016 00:08 · Личное сообщение · #18 |
|
Создано: 29 сентября 2016 00:35 · Поправил: olia64 · Личное сообщение · #19 dosprog пишет: Кого - вас? Так долго писал и старался, а ты не понял кого.. Или к благородным кровям себя относишь? Форум полумертвый, что не понятно? Хотелось бы большей активности, но это походу дела в Китае только или в eng сегменте. DenCoder пишет: Ну да, забыл про подробность - View -> Synchronize and compare Спасибо открыл для себя WinHex ) |
|
Создано: 29 сентября 2016 01:13 · Личное сообщение · #20 olia64 Открой же для себя ещё и рубрику Там, конечно, кое-какие инструменты старых версий, но на трекерах, варезах лежат по-новей. ----- IZ.RU |
|
Создано: 29 сентября 2016 01:30 · Личное сообщение · #21 Всегда умиляли пафосные и патриотические речи "доколе ??? доколе Россия/форум (нужное подчеркнуть) будет на коленях стоять ??? Поднимайтесь братья, надо срочно мне помочь !!!" | Сообщение посчитали полезным: plutos |
|
Создано: 29 сентября 2016 01:32 · Личное сообщение · #22 tihiy_grom пишет: Всегда умиляли пафосные и патриотические речи "доколе ??? доколе Россия/форум (нужное подчеркнуть) будет на коленях стоять ??? Поднимайтесь братья, надо срочно мне помочь !!!" смешно, да.. ( без иронии ) Не, я о другом. В других темах тоже тухло. Тут глобальная проблема. А я так... балуюсь реверсом. |
|
Создано: 29 сентября 2016 01:52 · Поправил: difexacaw · Личное сообщение · #23 По расплывчатому первому пункту задачи в общем случае задача не разрешима. Изначально не ясно что с чем сравнивать. Возможно код совершенно разный, тогда поиск подобий будет бессмысленным. Есть и есчо проблема - группировка. Но если это типичная задача - биндифф, турбодифф и прочие примитивные сравнивалки, ими вытягивают с апдейтов фиксы и потом пилят уже не актуальные сплойты. ----- vx |
|
Создано: 29 сентября 2016 02:26 · Личное сообщение · #24 |
|
Создано: 29 сентября 2016 03:04 · Личное сообщение · #25 olia64 пишет: отправляет на расшифровку всё то что ушло клиентом уже запакованое ( запакованое ушло всё правильно ), а распаковывается НЕПРАВИЛЬНО. учитывая всё это и вспоминая difexacaw пишет: По расплывчатому первому пункту задачи в общем случае задача не разрешима основная задача у ТС - выяснить почему клиент с сервером договориться не могут. а сравнение кода - это уже путь решения такой выбрал, потому что верит что проблема в алгоритме. DenCoder пишет: Кажется, Клерк, ака Инде, ака Bowrowco, ака Dr0p, соскучился. Или одепт?))) ну раз васма нет больше, где еще скучать?) |
|
Создано: 29 сентября 2016 05:37 · Личное сообщение · #26 https://www.drive2.ru/users/olia64/ ----- Give me a HANDLE and I will move the Earth. | Сообщение посчитали полезным: vovanre |
|
Создано: 29 сентября 2016 07:35 · Поправил: vovanre · Личное сообщение · #27 |
|
Создано: 29 сентября 2016 10:18 · Поправил: SReg · Личное сообщение · #28 |
|
Создано: 29 сентября 2016 10:30 · Поправил: reversecode · Личное сообщение · #29 |
|
Создано: 02 октября 2016 16:52 · Личное сообщение · #30 |
eXeL@B —› Вопросы новичков —› Как быстро сравнить 2 функции в IDA ? |