00401376 FF157C124000 call dword ptr [GetCommandLineA]
0040137C A396124000 mov [401296h],eax
00401381 6A00 push 0
00401383 6820104000 push 401020h
00401388 6896124000 push 401296h
0040138D 6A00 push 0
0040138F FF1500104000 call dword ptr [MessageBoxA]
00401395 6A00 push 0
00401397 FF1578124000 call dword ptr [ExitProcess]
Проблема с регистром eax
Код:
Мне надо чтоб команда с которой запустили программу, отображалась в MessageBox'е. Но вместо ключа я вижу в месейжбоксе три иероглифа всегда одни и теже. Что я делаю не правильно?
Код:
call ...
push 0
push 401020h
push eax
...
push 0
push 401020h
push eax
...
Ну, если всё-таки надо через память, то писать не
Код:
push 401296h
а
Код:
push [401296h]
т.к. в этой ячейке не первый символ строки, а указатель на него.
ты бы лучше дал исходник а не дизассемблерный отрывок
Сори, но исходника у меня нет, я пишу приложение в шестнадцатиричном редакторе.
Код:
push [401296h]
[/QUOTE]
Байты в файле фыглядят так: [FONT="Fixedsys"]FF3596124000[/FONT] ?
А push eax работает!
Что ломаем, если не секрет :)
Вот это настоящий программер!!!! Респект!!! :D
ВООБЩЕ БРЕД!!!!!
но если ты и вправду пишешь в шестнадцатетричном редакторе то я тебя уважаю но это нереально запоминать все опкоды.
Признавайся, что ломаешь?
Можно пользоваться таблицей опкодов, но самая проблема - формирование адресов.
Да ничего я не ломаю! Просто в целях самобразования смотрю как устроена программа. Я с тобой согласен, ето бред, особенно когда добавляеш в таблицу импорта новую функцыю... лучше не вспоминать :) Точку входа каждый раз надо менять, потом, когда добавляеш имя функцыи и название модуля - все ранее выставленные смещения на строки, модули и функцыи прпросту летят, потом лезеш в IAT заменяеш сгоревшие смещения правильными... Но ето так интересно, что ето того стоит!
просто лишняя трата времени!!!!
Но это было в DOS-COM, а в вин32 деже просто на асме без форматирования (полносттю все от первого байта) и то замучился.
Так что согласен:
[QUOTE=ahilles]
просто лишняя трата времени!!!!
[/QUOTE]