Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Подскажите ламеру


Автор: YURIC 28.8.2004, 18:15
Код
Exported fn(): ...t - Ord:0A8Eh
:0047F574 C3                      ret


:0047F575 90                      nop
:0047F576 90                      nop
:0047F577 90                      nop

Exported fn(): ... - Ord:0A8Fh
:0047F578 B801000000              mov eax, 00000001
:0047F57D C3                      ret


:0047F57E 90                      nop
:0047F57F 90                      nop




Что значит - mov eax, 00000001

и как его сменить допустим на ret

и что значит ret и nop
Добавлено @ 18:20
и еще возможно-ли поменять
:0047F578 B801000000 mov eax, 00000001

на

:0047F57D C3 ret

Автор: cardinal 28.8.2004, 19:06
Ты это все откуда взял? Мне кажется что из листинга сделанного компилятором...
Цитата(YURIC @ 28.8.2004, 17:15)
Что значит - mov eax, 00000001

Это значит записать в регистр eax число 1.
Цитата(YURIC @ 28.8.2004, 17:15)
и как его сменить допустим на ret

Если бы у тебя был исходник, то так ии заменить smile.gif Вообще Soft-Ice помоему позволяет заменять команды, но я этим не занимался. Ты лучше напиши что ты вообще сделать хочешь, чем в ассемблерных листингах ковырятся smile.gif
Цитата(YURIC @ 28.8.2004, 17:15)
и что значит ret и nop

ret означает тоже самое что и return в Си - возврат на то место, с которого была вызвана процедура.
nop означает no operation. Используется например для пауз.

Автор: YURIC 28.8.2004, 19:44
cardinal

Цитата
Это значит записать в регистр eax число 1.


А можно как нить загнать в регистр число 2 или 0?


Скорее всего если записать в регистр 0, то все будет ок.
Добавлено @ 19:44
либо ret сменить на mov eax, 00000001...

Автор: Jin X 28.8.2004, 22:47
biggrin.gif biggrin.gif biggrin.gif Ну, так замени! Возьми HIEW и замени, в чём проблема? biggrin.gif biggrin.gif biggrin.gif

Автор: cardinal 28.8.2004, 23:56
Цитата(YURIC @ 28.8.2004, 18:44)
А можно как нить загнать в регистр число 2 или 0?

mov eax, 0x02

Автор: Lonley 29.8.2004, 03:52
Код

B801000000

как отсюда видно то B8 есть команда
Код

mov eax

если не ошибаюсь, но лучше посмотреть формат машинных команд в справочнике
думаю чтоб 0 загнать
то вот так в шестнадцатеричном редакторе заменить на
только сначала нужно соответственно найти искомое место... smile.gif
Код

B800000000

ИМХО

Автор: YURIC 29.8.2004, 06:03
Jin X

Вот молодец! wow.gif , уже....

cardinal
я правила читал....., но ты сам спросил....
Цитата
Ты лучше напиши что ты вообще сделать хочешь, чем в ассемблерных листингах ковырятся


вот я и написал, поскольку это попросил модер.

mov eax, 0x02 это если я не ошибаюсь
B802000000, да?
Добавлено @ 06:06
Lonley
Спасибо, попробую
З.Ы. искомое место я нахожу без проблем smile.gif

Автор: YURIC 29.8.2004, 16:41
cardinal

Я и не прошу рассказать как ломать программу я спросил:

Цитата
Что значит - mov eax, 00000001

и как его сменить допустим на ret

и что значит ret и nop
Добавлено @ 18:20
и еще возможно-ли поменять
:0047F578 B801000000 mov eax, 00000001

на

:0047F57D C3 ret


Ладно, давай забудем, если ты настаиваешь я могу затереть тот пост в котором я тебе поведал что я хочу сделать.

Автор: _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_


Спасибо конечно, но я не настолько туп.... rolleyes.gif

Автор: _Chingachguk_ 30.8.2004, 17:15
Сорри smile.gif

Автор: YURIC 31.8.2004, 02:30
cardinal

подтер smile.gif

Автор: cardinal 31.8.2004, 08:29
Осталось вот это smile.gif
Цитата
cardinal
я правила читал....., но ты сам спросил....

Цитата 
Ты лучше напиши что ты вообще сделать хочешь, чем в ассемблерных листингах ковырятся 



вот я и написал, поскольку это попросил модер.

Цитата
cardinal

Я и не прошу рассказать как ломать программу я спросил:


Цитата 
Что значит - mov eax, 00000001

и как его сменить допустим на ret

и что значит ret и nop
Добавлено @ 18:20
и еще возможно-ли поменять
:0047F578 B801000000 mov eax, 00000001

на

:0047F57D C3 ret 



Ладно, давай забудем, если ты настаиваешь я могу затереть тот пост в котором я тебе поведал что я хочу сделать.

Цитата
cardinal

подтер 


Это я потом тоже удалю и будет так, что никто не найдет smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)