![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Kirgston |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: нет Всего: 2 |
Всем доброго времени суток! Мне предстоит разобраться с чужим кодом. Несколько "недопонимаю" как он работает. Есть ДЛЛ которая "вшывается" в одно приложение. Собственно если я не ошибаюсь область памяти становиться общая. В итоге прямо в памяти мы "фиксим" нужные нам вещи.
То есть я вижу что оно делает так: 1) Создаем массив из разных указанных елементов (тобиш в каждый элемент записываем значение) 2) Адрес 0x0044213E переводим в число типа int 3) в это число записываем наш массив Собственно теперь непонятки... 1) uchar == 1 бит ( то есть 1 элемент если не ошибаюсь 1 бит) собственно int == 4 бита . Массив содержит 6 элементов. 6 элементов == 6 бит. Значит мы уже вылезаем за область int ... я прав? Почему так? Зачем так? 2) Каждое число в НЕХ соответствует определенной команде. То есть число 0x90 соответствует команде "NOP" (ASM) . Откуда я это взял? С исходняка:
Что тогда значит 0xE9 , 0xA2 и зачем писать 0х00 ?? Собственно скрин дампа памяти: http://s005.radikal.ru/i211/1002/7f/f69e75070730.png |
||||
|
|||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
uchar = UCHAR = BYTE = unsigned char
0x0044213E это адрес в памяти, а (int*)0x0044213E указатель на область памяти Что тогда значит 0xE9 , 0xA2 и зачем писать 0х00 ?? Ну кто ж его знает зачем писать, так задумано кодописателем -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: нет Всего: 2 |
||||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
(int*)0x0044213E
нет мы компилятору говорит что это указатель на область памяти -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
uchar != 1 бит uchar == 1 байт int != 4 бита int == 4 байта -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
хех , как все хорошо запоминается
E9 опкод jmp A2 опкод mov addr , al (?)(точно не помню уточните в справочнике). Это сообщение отредактировал(а) bra1ny - 20.2.2010, 15:22 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
bra1ny, e9 это конечно опкод jmp rel32,
но те не кажется, что в "e9 a2 00 00 00" a2 - это не опкод, а смещение? вобщем e9 a2 00 00 00 90 это
или
nop скорее всего лишний |
||||
|
|||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Да поторопился , каюсь =)
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: нет Всего: 2 |
Каюсь =) перепутал, но сути мало меняет... GoldFinch, извините за глупый вопрос... но откуда взялось jmp $+5+0xa2 Ну то есть понял что это смещение... но откуда взялась "5" ? |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Размер команды: e9 a2 00 00 00 -- пять байт. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
* смещение считается от конца jmp
|
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: нет Всего: 2 |
Благодарю! А где можно еще почитать о опкодах? Те которые вы писали?
|
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 5 Всего: 64 |
memcpy -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Советую заказать бумажные издания,если они еще бесплатные.
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |