Current time: 25.11.2024, 18:59 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исследование героев
» туториал(ы)
Author Message
etoprostoya Offline

Posts: 1809
Post: #346

Лучше
MOVZX EAX, [A];
Потому что команда
MOV AL, [A];
не изменяет старшие 24 бита и если там что-то было, то так и останется.
EAX = 0x12345678; MOV AL, BYTE PTR [A]; => EAX = 0x12345601;
EAX = 0x12345678; MOVZX EAX, BYTE PTR [A]; => EAX = 0x00000001;
11.02.2011 01:28
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #347

(11.02.2011 01:08)Berserker Wrote:  A - константа?
Нет. Вычисляется из указателя.


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
11.02.2011 01:37
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #348

etoprostoya Wrote:MOVZX EAX, [A];
А для word есть аналогичная?
11.02.2011 01:51
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #349

etoprostoya, исправил и взял на заметку. Ab

Sav, похоже, есть: http://faydoc.tripod.com/cpu/movzx.htm


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 11.02.2011 01:53 by GhostManSD.)
11.02.2011 01:51
Visit this user's website Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #350

А управлять через ассемблер как? Код разный, а команда одна и та же.
movzx eax, x
где x - переменная запишет в eax байт или слово?
11.02.2011 01:59
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #351

Думаю, MOVZX EAX, BYTE [x] // MOVZX EAX, WORD [x] // MOVZX EAX, DWORD [x].


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
11.02.2011 02:17
Visit this user's website Find all posts by this user Quote this message in a reply
etoprostoya Offline

Posts: 1809
Post: #352

Quote:0F B6 / r MOVZX r16,r/m8 Move byte to word with zero-extension
0F B6 / r MOVZX r32,r/m8 Move byte to doubleword, zero-extension
0F B7 / r MOVZX r32,r/m16 Move word to doubleword, zero-extension
MOVZX EAX, BYTE PTR [MEM]
и
MOVZX EAX, WORD PTR [MEM]
имеют разный код в 32-битном моде.

(11.02.2011 02:17)GhostManSD Wrote:  Думаю, MOVZX EAX, BYTE [x] // MOVZX EAX, WORD [x] // MOVZX EAX, DWORD [x].

Смысл последнего? Ab Нет такого
(This post was last modified: 11.02.2011 02:18 by etoprostoya.)
11.02.2011 02:17
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #353

movzx eax, word ptr x

mov eax, word ptr x

Разница, выгода первого?
(This post was last modified: 11.02.2011 10:52 by Sav.)
11.02.2011 10:51
Find all posts by this user Quote this message in a reply
etoprostoya Offline

Posts: 1809
Post: #354

Выгода первого в том, что компилятор его правильно обработает, так как для второго выдаст ошибку - команды MOV eax, word ptr x не существует.
11.02.2011 12:30
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #355

Понятно, спасибо.
11.02.2011 13:30
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #356

(06.02.2011 03:11)Дьякон Wrote:  
(04.02.2011 15:29)MOP Wrote:  3. >=293512Ch (21AE12C + 787000). Основная динамическая память.
еще раз. Все секции - статические.
Ещё раз - а я что-то другое написал? Rolleyes
21AE12C + 787000 = 293512C = конец секции .data ВОГа, последней секции экзешника. Здесь кончается определённость и начинается динамический хаос.
Ладно, проехали.


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
12.02.2011 17:11
Find all posts by this user Quote this message in a reply
GrayFace Offline
Forum Moderators

Posts: 1233
Post: #357

(03.02.2011 10:25)Prayer Wrote:  Позарез нужно отключить или убрать из меню вообще кнопку "Показать дополнительные опции", чтоб на серваке ее тоже нельзя было использовать. Нашел дефку кнопки - gspbutt.def, текста на ней в genrltxt.txt.
Лучше для этого спользовать IDA (на IsoHunt можно взять). Там в Shift+F12 найти gspbutt.def, по xrefs перейти на место, где используется. Потом нажми Tab. Там же будут передаваться и координаты, и горячая клавиша, правда коды клавишь в Героях свои. Можно занулить её и сделть запредельными координаты, а лучше полностью перепрыгнуть код по созданию кнопки. Чтобы эти изменения внести, нужно сделать патч для Эры.


Вся правда обо мне
13.02.2011 00:31
Find all posts by this user Quote this message in a reply
GrayFace Offline
Forum Moderators

Posts: 1233
Post: #358

Это тоже не совсем правильно называть дин. памятью - это свободная память, в которой как выделяется динамическая память, так и грузятся всякие dll.

(13.09.2010 21:00)Sav Wrote:  Прошу прощения за тупой вопрос: динамический адрес может меняться при нескольких запусках программы на одном компьютере или только на разных компьютерах?
Может. На одном компе он часто остается одинаковым от запуска к запуску, но если, например, установить другой антивирус и т.п., легко может поменяться.

(04.02.2011 15:29)MOP Wrote:  1. < 401000h. В этих адресах работает система, поддерживая работу запущенного приложения. Также там находится стек. Запись/чтение там просто бесполезны и могут убить приложение.
Система на низком уровне использует адреса >7fffffffh (хотя может использовать только половину, если выставить это в манифесте ехе), системные библиотеки грузятся по адресам ниже 7fffffffh, но близким к этой границе. Адреса от 10000h до 401000h могут использоваться, у меня патч к редактору какое-то время, пока не вырос в размере, грузился по адресу 320000h - в этот адрес его поставил сам загрузчик Винды, я так и выставил. Только что для интереса сделал базовый адрес проги 30000h, где обычно стек - стек получился по адресу A0000h.

Подробнее про память и другие интересные вещи можно почитать у Рихтера: http://rouse.drkb.ru/books/rihter_2008.zip

По Асму вот эта книга должна быть хорошей: http://rouse.drkb.ru/books/marek.zip


Вся правда обо мне
14.02.2011 00:40
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #359

GrayFace, спасибо огромное!


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
14.02.2011 19:09
Visit this user's website Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #360

GhostManSD Wrote:005CCED7 8B0C95 6CA36800 MOV ECX, DWORD PTR DS:[EDX*4+68A36C]
005CCEDE 51 PUSH ECX
005CCEDF |. 6A 01 PUSH 1
СТАЛО
Код:
005CCED7 3E:8B0C85 6CA36800 MOV ECX, DWORD PTR DS:[EAX*4+68A36C]
005CCEDF |. 6A 01 PUSH 1
Во избежание дальнейших недоразумений...
Если кодишь в Олли, да и не только в ней - не указывай лишних данных. В данном случае надо было убрать "DWORD PTR DS:", но ты указал Олли эту дополнительную ненужную инфу. В результате смысл команды не изменился, но машкод её вырос на 1 байт и затёр "PUSH ECX".
То есть, в затирании ты сам виноват. Внимательнее.


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
20.02.2011 16:55
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group