Загрузка...

Восстановление структур в дизассемблере IDA

Тема в разделе Реверсинг / Assembler создана пользователем Dmyt 28 фев 2023. 190 просмотров

Загрузка...
  1. Dmyt
    Dmyt Автор темы 28 фев 2023 0 27 фев 2023
    Вечер добрый! Ходелось-бы научиться приводить струкры, при декомпиляции их в IDA или хекс-райс, к узнаваемому читаемому виду.
    По возможности ближе к исходному варианту. Еще лучше с возможностью обратной компиляции.
    Например
    Код

    #include<stdlib.h>
    #include<stdio.h>
    #include<windows.h>


    union un {
    int tseloe;
    char tsislo[2];
    };


    typedef struct MoyaStructura
    {
    char razmer;
    int Shirina;
    int Wysota;
    char text [1024];
    un mojun, *Pmojun;
    } MoyaStructura;



    MoyaStructura& zapolni(MoyaStructura *ekzemplar)
    {
    ekzemplar->razmer = 1024;
    ekzemplar->Shirina = 1282;
    ekzemplar->Wysota = 111;
    strncpy(ekzemplar->text, "Буря мглою небо кроет, вихри снежные крутя!", ekzemplar->razmer);
    ekzemplar->mojun.tseloe = 1365;
    ekzemplar->mojun.tsislo[0] = 102;
    ekzemplar->mojun.tsislo[1] = 102;
    ekzemplar->Pmojun = &(ekzemplar->mojun);

    return *ekzemplar;
    }


    int main()
    {
    MoyaStructura obrazets;
    zapolni(&obrazets);

    printf("Wysota %d, Shirina %d, mojun %d ", obrazets.Wysota, obrazets.Shirina, obrazets.mojun);
    return 0;
    }


    Что в IDA
    Код

    .text:004013CB ; int __cdecl main(int argc, const char **argv, const char **envp)
    .text:004013CB public _main
    .text:004013CB _main proc near ; CODE XREF: ___mingw_CRTStartup+F8p
    .text:004013CB
    .text:004013CB argc = dword ptr 8
    .text:004013CB argv = dword ptr 0Ch
    .text:004013CB envp = dword ptr 10h
    .text:004013CB
    .text:004013CB push ebp
    .text:004013CC mov ebp, esp
    .text:004013CE and esp, 0FFFFFFF0h
    .text:004013D1 sub esp, 430h
    .text:004013D7 call ___main
    .text:004013DC lea eax, [esp+1Ch]
    .text:004013E0 mov [esp], eax
    .text:004013E3 call __Z7zapolniP13MoyaStructura ; zapolni(MoyaStructura *)
    .text:004013E8 mov edx, [esp+20h]
    .text:004013EC mov eax, [esp+24h]
    .text:004013F0 mov ecx, [esp+428h]
    .text:004013F7 mov [esp+0Ch], ecx
    .text:004013FB mov [esp+8], edx
    .text:004013FF mov [esp+4], eax
    .text:00401403 mov dword ptr [esp], offset aWysotaDShirina ; "Wysota %d, Shirina %d, mojun %d "
    .text:0040140A call _printf
    .text:0040140F mov eax, 0
    .text:00401414 leave
    .text:00401415 retn
    .text:00401415 _main endp
    .text:00401415
    С ИДА-й знаком крайне поверхностно, с ассемблером едва немного лучше. Как к вопросу подойти не пойму. при нажатии T ''structure offset" выбора нужной структуры нету. Насоветуйте, пожалуйста.
     
    28 фев 2023 Изменено
  2. Replacer
    Replacer 10 мар 2023 ARTIFICIAL SUICIDE 99 21 июл 2021
    Ты их можешь сам дефайнить https://imgur.com/a/FtDrxfc
     
Top