| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Подскажите ламеру |
| Автор: YURIC 28.8.2004, 18:15 | ||
Что значит - mov eax, 00000001 и как его сменить допустим на ret и что значит ret и nop Добавлено @ 18:20 и еще возможно-ли поменять :0047F578 B801000000 mov eax, 00000001 на :0047F57D C3 ret |
| Автор: cardinal 28.8.2004, 19:06 | ||||||
Ты это все откуда взял? Мне кажется что из листинга сделанного компилятором...
Это значит записать в регистр eax число 1.
Если бы у тебя был исходник, то так ии заменить
ret означает тоже самое что и return в Си - возврат на то место, с которого была вызвана процедура. nop означает no operation. Используется например для пауз. |
| Автор: YURIC 28.8.2004, 19:44 | ||
cardinal
А можно как нить загнать в регистр число 2 или 0? Скорее всего если записать в регистр 0, то все будет ок. Добавлено @ 19:44 либо ret сменить на mov eax, 00000001... |
| Автор: Jin X 28.8.2004, 22:47 |
| |
| Автор: cardinal 28.8.2004, 23:56 | ||
mov eax, 0x02 |
| Автор: Lonley 29.8.2004, 03:52 | ||||||
как отсюда видно то B8 есть команда
если не ошибаюсь, но лучше посмотреть формат машинных команд в справочнике думаю чтоб 0 загнать то вот так в шестнадцатеричном редакторе заменить на только сначала нужно соответственно найти искомое место...
ИМХО |
| Автор: YURIC 29.8.2004, 06:03 | ||
| Jin X Вот молодец! cardinal я правила читал....., но ты сам спросил....
вот я и написал, поскольку это попросил модер. mov eax, 0x02 это если я не ошибаюсь B802000000, да? Добавлено @ 06:06 Lonley Спасибо, попробую З.Ы. искомое место я нахожу без проблем |
| Автор: YURIC 29.8.2004, 16:41 | ||
| cardinal Я и не прошу рассказать как ломать программу я спросил:
Ладно, давай забудем, если ты настаиваешь я могу затереть тот пост в котором я тебе поведал что я хочу сделать. |
| Автор: _Chingachguk_ 30.8.2004, 08:34 |
| YURIC Возьми редактор hiew. Вызови его с командной строкой: hiew32.exe YourProgram.exe Появится окошко синего цвета с текстом файла. Нажми F4 - выбор режима просмотра: текст/hex-dump(то, что будет при нажатии F4 в фар или nc)/decode (дизассемблериованые инструкции). Выбери последнее. Должны появится команды. Найди скроллингом нужное тебе место для редактирования. Если файл большой, это может быть неудобно. Используй поиск: F7: В твоем случае нужны вот эти команды: B801000000 mov eax, 00000001 :0047F57D C3 ret Значит, в окне поиска нужно вбить: B8 01 00 00 00 C3... Это типичные команды для компиляторов, поэтому, скорее всего, ты увидишь много ссылок. Жми Next Search (SHIFT+F7) для навигации по ссылкам. Найдя искомое место, подведи курсор к нужной тебе команде и нажми F3 - edit. Сейчас ты можешь писать свои байты, Если ты хочешь писать именно в байтах, но как правило удобнее писать в машинных командах. Поэтому нажми F2 - вызов ассемблера. Должна появиться в окошке редактирования одна команда. Исправь ее на любую нужную тебе. Например: mov eax,1 - > mov eax,0. После ввода появится следующая команда для редактирования, но если тебе нужно закончить, то откажись (esc) от редактирования следующей команды. После этого ты должен записать изменения в файл. Если ты не сделаешь этого, изменения пропадут. Сохранить - F9. |
| Автор: YURIC 30.8.2004, 15:29 |
| _Chingachguk_ Спасибо конечно, но я не настолько туп.... |
| Автор: _Chingachguk_ 30.8.2004, 17:15 |
| Сорри |
| Автор: YURIC 31.8.2004, 02:30 |
| cardinal подтер |
| Автор: cardinal 31.8.2004, 08:29 | ||||||
Осталось вот это
Это я потом тоже удалю и будет так, что никто не найдет |