Найдено нескольких похожих должностей, но ни одна из них не касается моей конкретной проблемы.Определение размера структуры
Я пытаюсь прочитать структуру данных из памяти внешних процессов. Я использовал OpenProcess для получения дескриптора, и моя функция для чтения памяти довольно аккуратная, но после сборки первой прочитанной структуры, которая должна быть 0xC0 байт, я вызываю sizeof (structure) и получаю двойное значение. Структура ниже, если это помогает. Надеюсь, кто-то может указать мне в правильном направлении.
Благодаря
struct BattleListEntry
{
int CID;
wstring Name;
byte* unknown[16];
int z, y, x;
byte* unknown2[8];
int Direction;
int TimeLastMoved;
int rnd3, rnd4, rnd5, rnd6;
int isWalking;
byte* unknown3[12];
int Outfit1, Outfit2, Outfit3, Outfit4, Outfit5;
byte* unknown4[24];
int HpPct; // 40 * 4 from start
int rnd7;
int rnd8;
//byte* unknown5[12];
int rnd9, rnd10, rnd11, rnd12, rnd13, rnd14, rnd15, rnd16, rnd17, rnd18;
};
Извинения, я, возможно, расширил структуру, так что удвоение общего размера фактически приведет к неправильному значению. Пожалуйста, проигнорируйте эту ошибку :) – XtrmJosh
Вы, кажется, полагаете, что 'byte * unknown [16]' имеет размер 16 байт. Фактически, это '16 * sizeof (void *)' байт большой. Это не массив байтов, это массив указателей. Кроме того, 'sizeof (wstring)' очень зависит от реализации. Что заставляет вас думать, что EXE, о котором идет речь, была построена с той же версией того же компилятора, что и ваша программа? –
Ничего, но я очень тщательно подобрал свои переменные в соответствии с размерами значений, которые нужно прочитать. Компилятор, используемый в исходной программе, становится очень очевидным, чтобы быть VS2010. Я знаю, что по моему опыту обратного проектирования приложения до и после выпуска VS2010 я видел, что они случайно реализовали ASLR ... Боль в заднице, которая оказалась. I sizeof'd wstring, чтобы подтвердить, что на самом деле он использует 32 байта. Я понимаю, что sizeof (byte) на самом деле 4, поэтому после деления этих значений и нескольких других модификаций я был бы ОЧЕНЬ близок к цели ... – XtrmJosh