Plugin Ida Pro, дамп памяти.

Тема в разделе "LANGS.C", создана пользователем CrawlUp, 29 окт 2018.

  1. CrawlUp

    CrawlUp Member

    Публикаций:
    0
    Регистрация:
    1 фев 2018
    Сообщения:
    61
    Думал создавать или нет новую тему, но всё же решил создавать, что бы людям которые будут пользоваться гуглом проще было ёё найти.
    Создал простой плагин дампа памяти Ida Pro, и он вроде даже работает, но меня не устраивает то что запускается он исключительно под идой которая дизассемблирует 64 битные приложения, когда запускаешь ida pro которая дизассемблирует 32 битные приложения выдаёт ошибку "Fatal error before kernel init". Напомню, на всякий случай, что та и та версии 64 битные, и dll для них нужны 64 битные, единственные отличия которые я нашёл, так это то что для 32 битного дизассемблера плагин должен называться - "plagin.dll", а для 64 битного дизассемблера - "plagin64.dll". Но код внутри, как мне кажется, должен быть одним и тем же, возможно в этом и есть моё заблуждение.

    Здесь базовый шаблон на основе которого сделан исходный код, он также по для 32 битного дизассемблера не работает:
    main.cpp
    Код (Text):
    1. #include <Windows.h>
    2. #include "Includes.h"
    3.  
    4.  
    5. //Инициализация плагина, проверяем подходит ли плагин для среды для которой он написан
    6. int idaapi IDAP_init(void)
    7. {
    8.     return PLUGIN_OK;
    9. }
    10.  
    11. //Функция завершения, освобождение ресурсов здесь
    12. void idaapi IDAP_term(void)
    13. {
    14.         return;
    15. }
    16.  
    17. //Main функция плагина
    18. bool idaapi IDAP_run(size_t arg)
    19. {
    20.     msg("Hello world!");
    21.     return true;
    22. }
    23.  
    24.  
    25. //Экспортируемая структура
    26. char IDAP_comment[] = "Тестовый плагин";
    27. char IDAP_help[]    = "Помощь в функции";
    28. char IDAP_name[]    = "KeyPatcher";
    29. char IDAP_hotkey[]    = "F10";
    30.  
    31. plugin_t PLUGIN ={
    32.         IDP_INTERFACE_VERSION,              //версия
    33.         PLUGIN_KEEP,                        //флаги
    34.         IDAP_init,                            //функция инициализации
    35.         IDAP_term,                            //функция завершения
    36.         IDAP_run,                            //функция main
    37.         IDAP_comment,                        //комментарий к макросу
    38.         IDAP_help,                            //помощь к макросу
    39.         IDAP_name,                            //имя макроса
    40.         IDAP_hotkey                            //горячие клавиши макроса
    41. };
    42.  
    43.  
    includes.h:
    Код (Text):
    1. #pragma once
    2. #define _CRT_SECURE_NO_WARNINGS 1
    3. #define __IDP__                 1
    4. #define __NT__                  1
    5. #define __X64__                 1
    6.  
    7. #pragma warning( push )
    8. #pragma warning( disable : 4267 )
    9. #pragma warning( disable : 4244 )
    10. //#pragma warning( disable : 1010 )
    11. #include <ida.hpp>
    12. #include <idp.hpp>
    13. #include <loader.hpp>
    14. #pragma warning( pop )
    Исходный код дампа памяти:
     

    Вложения: