· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Загводка

<< . 1 . 2 . 3 .

Посл.отвђт Сообщенiе


Дата: Сен 25, 2004 00:21:06

„Т.е. как мне кажется в "секции импорта" :) строковые названия заменяются на конкретные адреса... “

Ну мысль почти правильная :) , см. подробней .
====================================================================== ======================
00401000 >/$  6A 00             PUSH    0                ; /ExitCode = 0
00401002  \.  FF15 3D104000     CALL    [40103D]         ; \ExitProcess
====================================================================== ======================
00401008   .  00000000          DD      00000000         ;  Struct 'IMAGE_IMPORT_DESCRIPTOR'
0040100C   .  00000000          DD      00000000
00401010   .  00000000          DD      00000000
00401014   .  30100000          DD      00001030
00401018   .  3D100000          DD      0000103D
0040101C   .  00000000          DD      00000000         ;  Struct 'IMAGE_IMPORT_DESCRIPTOR'
00401020   .  00000000          DD      00000000
00401024   .  00000000          DD      00000000
00401028   .  00000000          DD      00000000
0040102C   .  00000000          DD      00000000
00401030   .  6B 65 72 6E 65 6C>ASCII   "kernel32.dll",0
0040103D > .  1AE03A79          DD      793AE01A         ; kernel32.ExitProcess
00401041      00000000          DD      00000000
00401045      00                DB      00
00401046      00                DB      00
00401047   .  45 78 69 74 50 72>ASCII   "ExitProcess",0
============================================================================================

Тут я разделил вверху код , а ниже импорт (один из его видов) . Команда по адресу 00401002 (CALL [40103D]) генерируеться компилером , и четыре байта по адресу 0040103D до загрузки модуля пустые (нули) , а при загрузке его в память туда проставляеться реальный адрес ф-ции (т.е. у меня 793AE01A соотв. ExitProcess)


Дата: Сен 25, 2004 01:33:25

Ещё может работать и так , но не везде :)
00401000 >/$  6A 00       PUSH 0        ; /ExitCode = 0
00401002  \.  E8 13D0FA78 CALL 793AE01A ; \ExitProcess


Дата: Сен 25, 2004 11:00:03

bagrus.

1)
Спасибо, что объясняешь,но я не могу понять цепочку передачи уп-
равления, т.е. на 00401002 call, но ведь на 0040103D стоит та-
кое значение 1AE03A79, а это далеко не jmp или call! Следовате-
льно наверняка есть демон, который следит за обращением к этой
области и переправляет по адресу указанному адресу.
Прав ли я?
И в какой момент в игру вступает функция GetProcAdress?

2)
Плюс если msgbox.exe из 2 урока Исцелителя компилится с помощью
ml.exe, а он не call dword использует, а call->jmp dword! Как
сделать так, что бы он сделал первый случай?

3)
В досе я люблю делать модификацию в сегменте кода, в винде на
сколько я понял в таблице секции поле characteristic надо пра-
вить, но на какое значение, какое наиболее безопасно? Чтобы слу-
чайно эту секцию не затерли.

4)
Как узнать по какому адресу загрузится функция из user32.dll, для
случая bound импорта?
Мои мысли спросил dumppe:
Image Base 77E10000
00026544 1C3 452 MessageBoxA

т.е. MessageBoxA загрузится по IB+Rva=VA=77e36544
Правильно? Olly говорит да, но ведь винде можит иногда не нравить-
ся imageBase?

В случае если я захочу сделать bound import, мне что все придется
вручную?


Дата: Сен 26, 2004 12:46:05

DevilsInterrupt

1. Квадратные скобки там не зря , CALL [40103D] - это не "прыгнуть" по адресу 40103D , а "прыгнуть" по адресу который лежит в ячейке 40103D .
GetProcAdress вступает во время загрузки модуля , именно по-этому мы должны хранить в импорте строковое наименование ф-ции и модуля (тут ExitProcess и kernel32.dll) , а результат от GetProcAdress загрузчик и запишет в ячейку 40103D .

2. http://www.xmln.narod.ru/Masm32ex.htm


Дата: Сен 27, 2004 09:17:05

>Квадратные скобки там не зря
Сорри за тупость

А второй вопрос слабо? Плюс тему Дизассембирование смотрел?

На Третий вопрос ответ начал получать исследуя Aspack, точнее че он "натворил" с моей msgbox.exe Тама и увидел вопросы по теме дизассемблирование ;) Прикольные вещи, но легко увидеть. Кстати твой линк у меня 404 дает

И как по поводу 4го квеста?


Дата: Сен 27, 2004 12:08:27

Я тебе говорил - восемь раз , разными предложениями задавать один вопрос , чтобы можно было его понять . Слабо ? Буду тебя игнорировать пока не научишся .


Дата: Сен 27, 2004 12:37:41

Bagrus
Извини за непонятливость! :(
Постараюсь исправиться.

Если сейчас взять 2 урок из Iczelion`a то если посмотреть через Hiew можно увидеть такие байты вроде ff 25 [adress], т.е. вызов функции идет через цепочку call -> jmp dword [adress].
А как сделать мне, что бы скомпилировалось приложение и там вместо этой цепочки сразу было call dword[adress]?

ЗЫ: Не сердись постарался испаравиться и написать по норме.


Дата: Сен 27, 2004 12:51:05

Тю , погуглил бы по слову "Masm32ex" и скачал , там батник тебе всё сам переделает в масме , а вчера ещё линк работал , странно .


Дата: Сен 27, 2004 13:06:54

[edited by IceStudent]

Ты про это говорил? :))))


Дата: Сен 27, 2004 13:13:59


Дата: Сен 27, 2004 18:28:04

Bogrus
Честное слово, чеза дурь не где ничо не скачаешь, кинь хоть на мыло?


Дата: Сен 27, 2004 18:55:19

Бери тогда отсюда , махал я все линки проверять .

<< . 1 . 2 . 3 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.085