Я совершенно новый для сборки. Я пишу патч для исполняемого файла, чтобы исправить проблему с графикой. В частности, мне нужно изменить параметр dwExStyle окна от 0 до 00020000. шестнадцатеричного кода оригинальной инструкции являетсясборка - как отредактировать исполняемый файл
6A 00 (push 0)
И когда я попытался изменить его
68 00 00 02 00 (push 00020000)
Исполняемых остановлен и я получаю ошибку нарушения доступа. Как изменить параметр команды push без использования исполняемого файла? Заранее спасибо
EDIT: весь код выполняется для вызова функции:
:0055935D 6A00 push 00000000
:0055935F 56 push esi
:00559360 6A00 push 00000000
:00559362 6A00 push 00000000
:00559364 68F9010000 push 000001F9
:00559369 6886020000 push 00000286
:0055936E 6800000080 push 80000000
:00559373 6800000080 push 80000000
:00559378 6A00 push 00000000
:0055937A 683C565700 push 0057563C |
:0055937F 683C565700 push 0057563C
:00559384 6A00 push 00000000
* Reference To: USER32.CreateWindowExA, Ord:0059h
|
:00559386 FF1574B15600 Call dword ptr [0056B174]
Как вы можете видеть, вызываемая функция CreateWindowExA из Windows API, который должен принять DWORD для требуемого параметра (window style)
Ваша новая инструкция длиннее старой, поэтому вы, вероятно, перезаписали инструкции, которые последовали за ней. – szx
Вы спрашиваете, как редактировать двоичный файл таким образом, чтобы он не менял размер, или вам нравится добавлять в него инструкции? Также ваш пример кажется недействительным. Если команда нажимает 0, то 0 должна иметь такую же битту, как и ваш другой номер (который, как представляется, составляет 64 бита). –