Нам нужно много раз сбрасывать память для анализа при обратном проектировании, но мы неизбежно встретим множество операторов ассемблера адреса памяти вызова памяти, и адрес памяти вызова будет заполнен перед вызовом.
Однако, когда мы сбросим его и откроем с помощью ida, он станет таким
После того, как мы дважды щелкнем по адресу памяти, мы увидим, что адрес каждой функции заполнен
Но мы сбрасываем его, чтобы упростить использование ida для анализа. Мы не можем переименовывать эти адреса один за другим в имя вызываемой функции, поэтому в настоящее время нам нужно использовать более простой метод, чтобы изменить все адреса памяти на имена функций.
Сценарий ida предоставляет нам множество функций, среди которых мы можем использовать функцию set_name для изменения.
Прежде всего, наше окно памяти следует за адресом памяти вызова и отображает его как адрес.Эти функции api заполняются адресом памяти во время работы программы, и все строки, содержащие функции api, копируются.
Используйте инструмент редактирования текста, чтобы отредактировать в следующем формате, будьте осторожны, чтобы не забыть добавить перед адресом памяти 0x
, что означает шестнадцатеричный
set_name(0x000000000008154C,"BCryptOpenAlgorithmProvider");
set_name(0x0000000000081554,"BCryptCloseAlgorithmProvider");
set_name(0x000000000008155C,"BCryptVerifySignature");
set_name(0x0000000000081564,"BCryptDestroyKey");
set_name(0x000000000008156C,"BCryptGetProperty");
set_name(0x0000000000081574,"BCryptImportKeyPair");
set_name(0x000000000008157C,"GetAdaptersInfo");
set_name(0x0000000000081584,"SHGetFolderPathW");
set_name(0x000000000008158C,"CharLowerBuffA");
set_name(0x0000000000081594,"GetExitCodeProcess");
set_name(0x000000000008159C,"GetNativeSystemInfo");
set_name(0x00000000000815A4,"SetFileAttributesW");
set_name(0x00000000000815AC,"CreateThread");
set_name(0x00000000000815B4,"FindNextFileW");
set_name(0x00000000000815BC,"VirtualFreeEx");
set_name(0x00000000000815C4,"ResetEvent");
set_name(0x00000000000815CC,"ReadFile");
set_name(0x00000000000815D4,"RtlLeaveCriticalSection");
set_name(0x00000000000815DC,"lstrlenW");
set_name(0x00000000000815E4,"CreateDirectoryW");
set_name(0x00000000000815EC,"FileTimeToSystemTime");
set_name(0x00000000000815F4,"CreateRemoteThread");
set_name(0x00000000000815FC,"lstrcmpW");
set_name(0x0000000000081604,"Process32FirstW");
set_name(0x000000000008160C,"GetLocalTime");
set_name(0x0000000000081614,"CreateFileW");
set_name(0x000000000008161C,"WideCharToMultiByte");
set_name(0x0000000000081624,"GetSystemDirectoryW");
set_name(0x000000000008162C,"RtlAddVectoredExceptionHandler");
set_name(0x0000000000081634,"GetComputerNameW");
set_name(0x000000000008163C,"GetTempFileNameW");
set_name(0x0000000000081644,"VirtualProtectEx");
Откройте команду сценария ida, введите указанный выше текст и нажмите «Выполнить».
Вернитесь на адрес, ранее проверенный и обнаружив, что все функции выполнены