Это правильный способ вызова функции с аргументами функции c ++ - PullRequest
0 голосов
/ 11 октября 2019

Когда я вызываю функцию (эта функция использует функцию в качестве некоторых аргументов) в программе с внедренной dll, она не работает, как запланировано, с помощью __asm.

Я попробовал следующий код в (imдаже не уверен, должен ли он там быть)

DLL_PROCESS_ATTACH

Я положил

          _asm
          {
              push 0;
              push 0x005D0260; //1
              push 0x005D0270; //2
              push 0x005D01E0; //3
              push 0x005D02B0; //4
              push 0x005D02B0; //5
              mov ecx, 0x007288E0; //6
              call 0x004B6520; //7
          }

1-4 - это адреса к функциям 5 - это char Studio 6 - это unk_7288E0, а 7 - это функцияЯ пытаюсь позвонить

Я также попробовал следующие

push 0;
              push 0x005D0260;
              push 0x005D0270;
              push 0x005D01E0;
              push 0x005D02B0;
              push "Studio";
              mov ecx, 0x007288E0;
              call 0x004B6520;

1-4 - адреса к функциям

Я ожидал, что он выполнит следующий код

        Main::runCodes_Register(
        &unk_7288E0, //0x007288E0
        aStudio, //0x005D02B0
        (int)unknown_libname_388, //0x005D02B0
        (int)Studio::Init, //0x005D01E0
        (int)Studio::Done, //0x005D0270
        (int)Studio::PostInit, //0x005D0260
        0);

но вместо этого я ничего не получаю - программа просто сворачивается и ломает все, и я проверил все адреса, и ни одна из функций не требует аргументов, кроме Register one

Когда я имею в виду сворачивание самого себя, я имею в виду, что это приводит к сбою всей программы. Я знаю, что у него нет никакой защиты, потому что я могу вводить другие dll, используя в них __asm ​​

...