Вечер добрый! Ходелось-бы научиться приводить струкры, при декомпиляции их в 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; } Code #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 Code .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" выбора нужной структуры нету. Насоветуйте, пожалуйста.