vnamillyo ida exe что это
3 простых шага по исправлению ошибок IDA.EXE
В вашей системе запущено много процессов, которые потребляют ресурсы процессора и памяти. Некоторые из этих процессов, кажется, являются вредоносными файлами, атакующими ваш компьютер.
Чтобы исправить критические ошибки ida.exe,скачайте программу Asmwsoft PC Optimizer и установите ее на своем компьютере
1- Очистите мусорные файлы, чтобы исправить ida.exe, которое перестало работать из-за ошибки.
2- Очистите реестр, чтобы исправить ida.exe, которое перестало работать из-за ошибки.
3- Настройка Windows для исправления критических ошибок ida.exe:
Всего голосов ( 181 ), 115 говорят, что не будут удалять, а 66 говорят, что удалят его с компьютера.
Как вы поступите с файлом ida.exe?
Некоторые сообщения об ошибках, которые вы можете получить в связи с ida.exe файлом
(ida.exe) столкнулся с проблемой и должен быть закрыт. Просим прощения за неудобство.
(ida.exe) перестал работать.
ida.exe. Эта программа не отвечает.
(ida.exe) — Ошибка приложения: the instruction at 0xXXXXXX referenced memory error, the memory could not be read. Нажмитие OK, чтобы завершить программу.
(ida.exe) не является ошибкой действительного windows-приложения.
(ida.exe) отсутствует или не обнаружен.
IDA.EXE
Проверьте процессы, запущенные на вашем ПК, используя базу данных онлайн-безопасности. Можно использовать любой тип сканирования для проверки вашего ПК на вирусы, трояны, шпионские и другие вредоносные программы.
процессов:
Cookies help us deliver our services. By using our services, you agree to our use of cookies.
filecheck .ru
Подлинный файл является одним из компонентов программного обеспечения Internet Download Accelerator, разработанного WestByte.
Вот так, вы сможете исправить ошибки, связанные с ida.exe
Информация о файле ida.exe
Описание: ida.exe не является необходимым для Windows. Файл ida.exe находится в подпапках «C:\Program Files». Размер файла для Windows 10/8/7/XP составляет 3,958,848 байт.
У процесса есть видимое окно. Это файл, подписанный Verisign. Поставлена цифровая подпись. Это не системный процесс Windows. Ida.exe способен записывать ввод данных и мониторить приложения. Поэтому технический рейтинг надежности 2% опасности.
Если у вас есть какие-либо проблемы с ida.exe, Вы можете удалить программное обеспечение Internet Download Accelerator version, используя функцию «Установка и удаление программ» в Панели управления Windows, получить помощь от поставщика программного обеспечения Westbyte или обновить программу до последней версии.
Важно: Некоторые вредоносные программы маскируют себя как ida.exe, особенно, если они расположены в каталоге c:\windows или c:\windows\system32. Таким образом, вы должны проверить файл ida.exe на вашем ПК, чтобы убедиться, что это угроза. Мы рекомендуем Security Task Manager для проверки безопасности вашего компьютера.
Комментарий пользователя
Лучшие практики для исправления проблем с ida
Если у вас актуальные проблемы, попробуйте вспомнить, что вы делали в последнее время, или последнюю программу, которую вы устанавливали перед тем, как появилась впервые проблема. Используйте команду resmon, чтобы определить процесс, который вызывает проблемы. Даже если у вас серьезные проблемы с компьютером, прежде чем переустанавливать Windows, лучше попробуйте восстановить целостность установки ОС или для Windows 8 и более поздних версий Windows выполнить команду DISM.exe /Online /Cleanup-image /Restorehealth. Это позволит восстановить операционную систему без потери данных.
ida сканер
Security Task Manager показывает все запущенные сервисы Windows, включая внедренные скрытые приложения (например, мониторинг клавиатуры или браузера, авто вход). Уникальный рейтинг надежности указывает на вероятность того, что процесс потенциально может быть вредоносной программой-шпионом, кейлоггером или трояном.
Бесплатный aнтивирус находит и удаляет неактивные программы-шпионы, рекламу, трояны, кейлоггеры, вредоносные и следящие программы с вашего жесткого диска. Идеальное дополнение к Security Task Manager.
SpeedUpMyPC бесплатное сканирование, очистка, восстановление и оптимизация вашей системы.
Фундаментальные основы хакерства. Мастер-класс по анализу исполняемых файлов в IDA Pro
Содержание статьи
Фундаментальные основы хакерства
Пятнадцать лет назад эпический труд Криса Касперски «Фундаментальные основы хакерства» был настольной книгой каждого начинающего исследователя в области компьютерной безопасности. Однако время идет, и знания, опубликованные Крисом, теряют актуальность. Редакторы «Хакера» попытались обновить этот объемный труд и перенести его из времен Windows 2000 и Visual Studio 6.0 во времена Windows 10 и Visual Studio 2019.
Ссылки на другие статьи из этого цикла ищи на странице автора.
С легкой руки Денниса Ритчи повелось начинать освоение нового языка программирования с создания простейшей программы «Hello, World!». Не будем нарушать эту традицию и оценим возможности IDA Pro следующим примером.
Компилятор сгенерирует исполняемый файл объемом почти 190 Кбайт, большую часть которого займет служебный, стартовый или библиотечный код. Попытка дизассемблирования с помощью таких средств, как W32Dasm, не увенчается быстрым успехом, поскольку над полученным листингом размером в два с половиной мегабайта (!) можно просидеть не час и не два. Легко представить, сколько времени уйдет на серьезные задачи, требующие изучения десятков и сотен мегабайтов дизассемблированного текста.
Попробуем дизассемблировать эту программу с помощью IDA. Если все настройки оставить по умолчанию, то после завершения анализа экран должен выглядеть следующим образом.
Результат работы IDA Pro
Чтобы открыть текстовое представление, надо из контекстного меню выбрать пункт Text view.
Какую версию IDA Pro выбрать?
Последней версией IDA Pro на момент написания статьи была 7.3. Ее цена может быть великовата для покупки в исследовательских целях. Как известно, Ильфак Гильфанов очень строго относится к утечкам и появлению продуктов своей компании в интернете и не допускает подобного.
Однако на сайте компании Hex-Rays в публичный доступ выложена бесплатная версия дизассемблера с функциональными ограничениями. Например, она не получает обновления после достижения майлстоуна целой версии, то есть сейчас для свободной загрузки доступна версия 7.0. Также она поддерживает только архитектуры x86 и x64.
Тем не менее этого вполне достаточно для наших целей. Потому что нам не придется разбираться в коде для процессоров ARM, Motorola, Sparc, MIPS или Zilog. Еще одно ограничение накладывается на использование в коммерческих целях, но и тут наша совесть чиста.
Продемонстрировать инициализацию переменных, совершаемую стартовым кодом, а также получение их значений позволяет следующая программа.
CRtO.demo.c
Прототип функции main как будто указывает, что приложение не принимает никаких аргументов командной строки, но результат работы программы говорит об обратном и на моей машине выглядит так (приводится в сокращенном виде):
OS Version: 6.2
Build: 156
Arguments count: 1
Argument 01: CRt0.demo.exe
Environment variables count: 99
.
Variable 20: FrameworkVersion=v4.0.30319
Variable 19: FrameworkDIR32=C:\WINDOWS\Microsoft.NET\Framework\
Variable 18: FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework\
Variable 17: Framework40Version=v4.0
Variable 16: ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
Variable 15: DriverData=C:\Windows\System32\Drivers\DriverData
//******************** Program Entry Point ********************
:0040628B E802070000 call 00406992
:00406290 E974FEFFFF jmp 00406109
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004062B6(U)
|
:00406295 8B4DF4 mov ecx, dword ptr [ebp-0C]
:00406298 64890D00000000 mov dword ptr fs:[00000000], ecx
:0040629F 59 pop ecx
:004062A0 5F pop edi
:004062A1 5F pop edi
:004062A2 5E pop esi
:004062A3 5B pop ebx
:004062A4 8BE5 mov esp, ebp
:004062A6 5D pop ebp
:004062A7 51 push ecx
:004062A8 F2 repnz
:004062A9 C3 ret
.
Иначе выглядит результат работы IDA, умеющей распознавать библиотечные функции по их сигнатурам (приблизительно по такому же алгоритму работает множество антивирусов).
Поэтому способности дизассемблера тесно связаны с его версией и полнотой комплекта поставки — далеко не все версии IDA Pro в состоянии работать с программами, сгенерированными современными компиляторами.
Текстовое отображение результата работы IDA
.text:0040628B start proc near
.text:0040628B call sub_406992
.text:00406290 jmp loc_406109
Для перехода на метку достаточно поставить на нее текстовый курсор и нажать Enter. Если подвести курсор мыши к метке или вызову функции, появится окно, в котором будет показано начало выбранной функции или место листинга, куда переводит метка, что очень удобно.
В данном случае, как мы видим по комментарию, IDA отправила нас в начало стартового куска кода. Немного прокрутим листинг вниз, обращая внимание на плавные переходы по меткам.
.text:004010D3 push offset aHelloSailor ; «Hello, Sailor!\n»
.text:004010D8 push offset unk_42DE30
.text:004010DD call sub_401170
Если поместить курсор в границы имени aHelloSailor и нажать Enter, IDA автоматически перейдет к строке, в которой выполняется определение переменной:
.rdata:0041E1A0 aHelloSailor db ‘Hello, Sailor!’,0Ah,0 ; DATA XREF: sub_4010D0+3↑o
Выражение DATA XREF: sub_4010D0+3↑o называется перекрестной ссылкой и свидетельствует о том, что в третьей строке процедуры sub_4010D0 произошло обращение к текущему адресу по его смещению ( o от слова offset), а стрелка, направленная вверх, указывает на относительное расположение источника перекрестной ссылки.
Если навести курсор на выражение sub_4010D0+3↑o и нажать Enter, то IDA Pro перейдет к следующей строке:
.text:004010D3 push offset aHelloSailor ; «Hello, Sailor!\n»
Нажатие Esc отменяет предыдущее перемещение, возвращая курсор в исходную позицию.
К слову, дизассемблер W32Dasm даже не смог распознать строковую переменную.
Что не так с IDA?
Положа руку на сердце — я был слегка разочарован, ибо ожидал, что IDA распознает больше библиотечных процедур. Поэтому я решил натравить «Иду» на такую же программу, но сгенерированную более ранней версией компилятора. Подопытным кроликом выступил Visual C++ 8.0 (VS 2005).
Сравним результаты работы компиляторов. Тот же исходник, компиляция из командной строки (папка first05 ). Загрузим итоговый экзешник в «Иду». Листинг приводится в сокращенном виде для экономии пространства.
Мало того что стартовый код меньше по объему, так еще было автоматически определено большее количество библиотечных функций, среди которых: GetVersionExA, GetProcessHeap, HeapFree и ряд других. Среди них достаточно просто найти вызов main и перейти на саму функцию.
Тем не менее VC++ 8.0 — ушедшая эпоха, и в пример я ее привел только для ознакомления.
.text:004010D0 ; int __cdecl main(int argc, const char **argv, const char **envp)
.text:004010D0 main proc near ; CODE XREF: start-8D↓p
.text:004010D0
.text:004010D0 argc = dword ptr 8
.text:004010D0 argv = dword ptr 0Ch
.text:004010D0 envp = dword ptr 10h
.text:004010D0
.text:004010D0 push ebp
.text:004010D1 mov ebp, esp
.text:004010D3 push offset aHelloSailor ; «Hello, Sailor!\n»
.text:004010D8 push offset unk_42DE30
.text:004010DD call sub_401170
.text:004010E2 add esp, 8
.text:004010E5 xor eax, eax
.text:004010E7 pop ebp
.text:004010E8 retn
.text:004010E8 main endp
Обрати внимание: IDA в комментарии подставила прототип функции, а ниже параметры по умолчанию.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Крис Касперски
Известный российский хакер. Легенда ][, ex-редактор ВЗЛОМа. Также известен под псевдонимами мыщъх, nezumi (яп. 鼠, мышь), n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.
Юрий Язев
Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».
WinAFL на практике. Учимся работать фаззером и искать дыры в софте
Содержание статьи
Что такое фаззинг
Если ты совсем незнаком с этой техникой поиска уязвимостей, то можешь обратиться к одной из наших вводных статей:
Также по теме фаззинга рекомендуем следующие статьи:
Так же как и AFL, WinAFL собирает информацию о покрытии кода. Делать это он может тремя способами:
Мы остановимся на классическом первом варианте как самом простом и понятном.
Фаззит WinAFL следующим образом:
Такой подход позволяет не тратить лишнее время на запуск и инициализацию программы и значительно увеличить скорость фаззинга.
Требования к функции
Из логики работы WinAFL вытекают простые требования к целевой функции для фаззинга. Целевая функция должна:
Компиляция WinAFL
В репозитории WinAFL на GitHub уже лежат скомпилированные бинари, но у меня они просто не захотели работать, поэтому для того, чтобы не пришлось разбираться с лишними проблемами, скомпилируем WinAFL вместе с самой последней версией DynamoRIO. К счастью, WinAFL относится с тем немногочисленным проектам, которые компилируются без проблем на любой машине.
В командной строке Visual Studio перейди в папку с исходниками WinAFL.
Для компиляции 32-битной версии выполни следующие команды:
Для компиляции 64-битной версии — такие:
В моем случае эти команды выглядят так:
После компиляции в папке WinAFL dir>\ build 32/ 64>\ bin\ Release будут лежать рабочие бинари WinAFL. Скопируй их и папку с DynamoRIO на виртуалку, которую будешь использовать для фаззинга.
Поиск подходящей цели для фаззинга
AFL создавался для фаззинга программ, которые парсят файлы. Хотя WinAFL можно применять для программ, использующих другие способы ввода, путь наименьшего сопротивления — это выбор цели, использующей именно файлы.
Если же тебе, как и мне, нравится дополнительный челлендж, ты можешь пофаззить сетевые программы. В этом случае тебе придется использовать custom_net_fuzzer. dll из состава WinAFL либо писать свою собственную обертку.
К сожалению, custom_net_fuzzer будет работать не так быстро, потому что он отправляет сетевые запросы своей цели, а на их обработку будет тратиться дополнительное время.
Однако фаззинг сетевых приложений выходит за рамки этой статьи. Оставь комментарий, если хочешь отдельную статью на эту тему.
Удивительно, но большинство разработчиков не думают о WinAFL, когда пишут свои программы. Поэтому если твоя цель не соответствует этим критериям, то ее все равно можно при желании адаптировать к WinAFL.
Поиск функции для фаззинга внутри программы
Мы поговорили об идеальной цели, но реальная может быть от идеала далека, поэтому для примера я взял программу из старых запасов, которая собрана статически, а ее основной исполняемый файл занимает 8 Мбайт.
У нее много всяких возможностей, так что, думаю, ее будет интересно пофаззить.
Моя цель принимает на вход файлы, поэтому первое, что сделаем после загрузки бинаря в IDA Pro, — это найдем функцию CreateFileA в импортах и посмотрим перекрестные ссылки на нее.
Мы сразу же можем увидеть, что она используется в четырех функциях. Вместо того чтобы реверсить каждую из них в статике, посмотрим в отладчике, какая именно функция вызывается для парсинга файла.
Откроем нашу программа в отладчике (я обычно использую x64dbg) и добавим аргумент к командной строке — тестовый файл. Откуда я его взял? Просто открыл программу, выставил максимальное число опций для документа и сохранил его на диск.
Один любопытный момент. «Официально» функции CreateFile* предоставляются библиотекой kernel32.dll. Но если посмотреть внимательнее, то это библиотека содержит только jmp на соответствующие функции kernelbase.dll.
Продолжим выполнение программы, пока не увидим в списке аргументов путь к нашему тестовому файлу.
Перейдем на вкладку Call Stack и увидим, что CreateFileA вызывается не из нашей программы, а из функции CFile:: Open библиотеки mfc42.
Так как мы только ищем функцию для фаззинга, нам нужно помнить, что она должна принимать путь к входному файлу, делать что‑то с файлом и завершать свою работу настолько чисто, насколько это возможно. Поэтому мы будем подниматься по стеку вызовов, пока не найдем подходящую функцию.
Vnamillyo ida exe что это
Хорошо, мы уже увидели что-то о ЗАГРУЗЧИКЕ и мы будем продолжать его разбирать и дальше, но сейчас мы будем разбирать некоторые особенности ОТЛАДЧИКА, которые дополняют друг друга.
IDA поддерживает множество ОТЛАДЧИКОВ, чтобы увидеть их, мы открываем оригинальный файл КРЭКМИ CRUEHEAD без патча в IDA.
Очевидно, мы выбираем OVERWRITE, если IDA спросит нас, хотим ли мы создать новую базу данных и затереть старую, чтобы сделать новый анализ, если у нас уже была в том же месте предыдущая база данных или файл IDB пропатченой программы.
Мы не будем устанавливать режим РУЧНАЯ ЗАГРУЗКА, потому что не хотим соглашаться на все окна, которые появляются до тех пор, пока они все не загрузятся.
Очевидно, чтобы начать с самого начала между различными возможностями ОТЛАДЧИКОВ, мы будем выбирать для начала LOCAL WIN32 DEBUGGER, который будет служить отправной точкой, позже мы рассмотрим и другие отладчики.
Мы увидим некоторые возможности ОТЛАДЧИКА включенного в IDA, который имеет свои особенности и если не научиться использовать его, так как он немного отличается от остальных отладчиков, то в дальнейшем Вам будет сложно.
Я думаю, что различия возникают, потому что IDA начинала свой жизненный путь просто как так называемый ЗАГРУЗЧИК или очень хороший статический дизассемблер и с большими возможностями интерактивности для реверсинга, затем в неё был добавлен ОТЛАДЧИК, который принёс свои проблемы, которые были решены, но способы работать с ним иногда немного отличается от других ОТЛАДЧИКОВ, таких как OLLYDBG.
В DEBUGGERS → DEBUGGERS OPTIONS у нас есть опции для ОТЛАДЧИКА.
Мы будем устанавливать галочку SUSPEND ON PROCESS ENTRY POINT для того, чтобы останавливаться на точке входа.
Мы будем делать изменения в анализе, как мы это делали и раньше, мы будем ПЕРЕКРАШИВАТЬ и ПЕРЕИМЕНОВЫВАТЬ зоны условных переходов.
Здесь мы установим BP с помощью F2 на переход, который принимает решение по адресу 0x401243 и мы идём к другому переходу, который мы пропатчили и также нажимаем F2.
Сейчас мы можем запустить ОТЛАДЧИК с помощью DEBUGGER → START PROCESS.
Это окно всегда будет появляться у нас, когда мы идём в ОТЛАДЧИК, чтобы отлаживать наш исполняемый файл на нашей локальной машине, так как пока мы анализируем его в ЗАГРУЗЧИКЕ, он никогда не выполнится на нашей машине, но сейчас если он будет выполняться в отладчике, нам всегда нужно быть осторожным выполняя такой файл, если это ВИРУС или что-то потенциально опасное, нужно использовать УДАЛЕННЫЙ ОТЛАДЧИК и выполнять его код в виртуальной машине, мы увидим это в своё время.
Поскольку изучение КРЭКМИ CRUHEAD более интересное занятие, чем лечение ЛЕССИ, мы нажимаем YES.
Выше мы попросили отладчик остановиться на ТОЧКЕ ВХОДА, так это и произойдёт, отладчик остановится по адресу 0x401000, если я нажму пробел то перейдём в графический режим прям как в ЗАГРУЗЧИКЕ.
Небесный цвет фона блоков говорит мне, что я нахожусь в ОТЛАДЧИКЕ, в ЗАГРУЗЧИКЕ же блоки белые по умолчанию.
Я перемещаю окна, прежде всего уменьшая немного часть окна OUTPUT WINDOW, перетаскивая его за край вниз, расширяю немного стек, чтобы видеть регистры, которые находятся выше, и слева, и нужные нам флаги.
Здесь мы видим РЕГИСТРЫ и ФЛАГИ.
После того, как я добился для себя удобного вида, я буду сохранять его по умолчанию для ОТЛАДЧИКА через меню WINDOWS → SAVE DESKTOP выбирая галочку в DEFAULT, всегда, когда мы запускаем ОТЛАДЧИК он будет загружаться с теми настройками, которые мы сохранили и если мы хотим изменить их снова, мы можем сделать это без проблем.
Под регистрами мы видим СТЕК.
В нижней части дизассемблированного листинга мы видим:
Мы всегда будем иметь адрес памяти и ФАЙЛОВОЕ СМЕЩЕНИЕ, или просто СМЕЩЕНИЕ в исполняемом файле, если мы откроем его в HEX редакторе, например таком как HXD, то увидим
Мы видим, что в ПО СМЕЩЕНИЮ 0x600 находятся те же самые байты.
Мы уже знаем, что ПО УМОЛЧАНИЮ в ЗАГРУЗЧИКЕ и ОТЛАДЧИКЕ горячая клавиша G сконфигурирована так, что при нажатии на неё происходит переход к адресу памяти, если я нажму G и введу 0x401389.
Я иду в область, где был BP, мы видим цвета, я делаю так, чтобы байты не были видны, чтобы не загрязнять наш внешний вид программы, и я вижу, что внешний вид стал таким как мы оставили его ЗАГРУЗЧИКЕ, если мы реверсим, изменяем имена и так далее, здесь в ОТЛАДЧИКЕ все изменения сохраняются, также изменения, которые мы сделали здесь появятся в ЗАГРУЗЧИКЕ, так как это модуль помеченный как те, которые загружаются в ЗАГРУЗЧИК.
В VIEW → OPEN SUBVIEW → SEGMENTS мы видим сейчас три сегмента, которые загружает ЗАГРУЗЧИК, когда не активирован режим РУЧНОЙ ЗАГРУЗКИ, КОД, который загружается по адресу 0x401000, ДАННЫЕ (DATA) и ДАННЫЕ ИМПОРТА (IDATA), любые изменения, которые, мы сделаем с этими тремя сегментами, будут оставаться, так как они загружены в ЗАГРУЗЧИК, но изменения в других сегментах будут потеряны, потому что они являются модулями загруженными ОТЛАДЧИКОМ и они не будут сохранены в базу данных.
Одна из панелей, которую я всегда считаю очень полезной.
Я добавляю её и сохраняю снова с помощью SAVE DESKTOP, чтобы использовать её по умолчанию.
Возможность возвращаться назад в место, где Вы были раньше и вперед очень удобна.
Нажав стрелку назад, я возвращаюсь к точке входа, где я был раньше.
Также в меню DEBUGGER.
Я могу видеть список BP и идти туда, куда я хочу, кликнув на BP два раза.
Так что я нахожусь сейчас на EP и у меня есть две установленных BP, так что я могу нажать клавишу F9 для запуска программы.
Мы идём в HELP → REGISTER и давайте введём ключ.
Стрелка с левой стороны где будет продолжено выполнение начинает мигать, мы видим, что регистр EAX равен 0x72.
Если я наберу в панели PYTHON CHR(0x72), я увижу, что это буква r слова ricnar.
И она будет сравниваться с числом 0x41, чтобы узнать ниже ли она.
Мы можем также видеть с помощью функции CHR(0x41) в панели PYTHON, что это буква A.
Но мы также можем сделать это более легким методом, для этого нужно сделать правый щелчок на числе 41H и в списке между настройками, которые мы можем выбрать для отображения и у меня появляется символ A.
Мы видим, что сейчас идёт сравнение с символами от A и до Z, на данный момент мы не решим полностью этот крэкми, но мы видим, что 0x72 больше чем 0x41, следовательно, IDA не перейдет в красный блок сообщения об ошибке. Очевидно IDA будет переходить в красный блок, если число будет ниже, но также его можно оценить просто увидев флаги.
Флаг C = 0, поэтому переход не будет сделан и произойдет переход к красной стрелке.
Каково сейчас математическое условие, при котором активируется ФЛАГ CARRY?
Это отрицательное значение и оно не принимается как результат операции с положительными числами, поэтому значение продолжает работать с ним в режиме HEX.
Оно будет равно числу 0xFFFFFFFEF и считая его как положительное, это очень большое значение равное 4294967279 и ( in no way subtracting ) 0x30 – 0x41 равно отрицательному числу 0xFFFFFFEF.
Как мы узнаем, учитывается знак в операции или нет?
Если я сравниваю 0xFFFFFFFF с числом 0x40 в беззнаковом переходе, очевидно, что оно больше, так как это максимальное положительное число, но если это переход, где учитываются знаки, это число будет равно -1 и оно будет меньше значения 0x40.
Чтобы оценить, является ли сравнением знаковым или нет, мы должны рассмотреть следующие условные переход.
Если переход какой-либо из этой таблицы, он оценивается БЕЗ ЗНАКА, в то время как каждый из них имеет свой аналог как JL для JB в таблице переходов СО ЗНАКОМ.
Мы видим, что JE оценивает равны ли числа в обеих таблицах, потому что в этом случае знак не имеет значения, если они равны, флаг ZF будет активирован и в него будет помещена единица.
В ежедневном анализе мы видим слишком много флагов, видим переходы JB и знаем, что это сравнение между положительными числами или числами БЕЗ ЗНАКА и что если первое число меньше второго, то будет осуществлен переход, но хорошо то, что можно видеть, что находится ниже.
Если я продолжу останавливаться на всех BP, я буду видеть, что я нахожусь в цикле, который читает один за одним символы моего имени и сравнивает затем их с числом 0x41, если есть символ ниже этого числа, то покажется сообщение об ошибке, так как я ввел только буквы (ricnar) у нас не будет этого случая, но давайте перезагрузим процесс с помощью TERMINATE PROCESS и запустим с помощью START PROCESS снова и сейчас введем имя 22ricnar, а ключ 98989898.
Нажмём ОК и остановимся на BP.
Мы видим, что сейчас мой первый символ равен 0x32, что соответствует символу 2 слова 22ricnar.
Мы можем установить его в ноль.
В этот самый момент, когда мы изменили переход, красная стрелка начинает мигать, потому что мы инвертировали переход.
Если мы нажмём RUN отладчик снова остановится, когда сравнит следующие символ 2 из слова 22ricnar и направится в мигающую зеленую стрелку, что приведет нас к сообщению об ошибке, мы инвертируем снова флаг CF помещая в него 0.
В следующий раз он остановится в этом переходе, что соответствует буквам ricnar, которые больше чем 0x41 и которые не активируют флаг CF и они продолжают до красной стрелке.
После обмана проверки каждого символа моего имени мы переходим к финальному переходу.
Здесь он сравнивает EAX и EBX, чтобы узнать равны ли они, но это не имеет значения, отладчик включил красную стрелку, потому что они разные и меня отправляют к сообщению об ошибке.
Здесь я вижу, что они не равны, и флаг Z неактивный.
Если мы активируем его, он будет менять переход и идти на зеленую стрелку в сообщение GOOD BOY, делаем правый щелчок на флаге ZF и выбираем INCREMENT VALUE.
Мы сделали то же самое, что и когда мы пропатчили код, но не делая никаких изменений, а просто только меняя флаги в ОТЛАДЧИКЕ.
Каждый раз, когда мы не хотим инвертировать переходы напрямую, мы идём в хороший блок где мы хотим продолжать и помещаем там курсор и делаем правый клик, хотя в IDA 6.8 присутствует БАГ, которая был устранён в версии 6.9, который возникает при правый клике рушится IDA если это случится с вами, найдите ярлык который вам нужен по следующей ссылке:
А в самой IDA идём в OPTIONS → SHORTCUTS.
Если у нас есть проблемы, когда мы щелкаем правой кнопкой мыши, чтобы установить EIP поместите курсор туда, куда Вы хотите перейти, например 0x40124C и нажмите сочетание CTRL + N что является командой SET IP.
И программа будет продолжена с адреса 0x40124C, что является тем же самым, что и инвертирование флага.