· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.RESEARCH —› Изменится адрес или нет?

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


Дата: Мар 15, 2003 15:37:23

Пусть есть переменная типа a:dword; Будет ли ее адрес всегда постоянным? (после перезагрузки, на других компьютерах).
Обьясню так: например есть некая переменная типа Dword, смотрю ее адрес - DS:0000ff78. Если я перезапущу программу, то он станет другим? Или если я запущу прогу на другом компе?


Дата: Мар 15, 2003 17:31:49

Если переменная глобальная - то не изменится, будет DS:0040FF78. Если локальная переменная, место для которой выделяется в стеке, то конечно.


Дата: Мар 15, 2003 17:36:00

... или нет :)


Дата: Мар 15, 2003 18:11:15

Если не использовать reloc - то не изменится.


Дата: Мар 16, 2003 16:09:01

Обьясню задачу подробнее. Есть некая прога "X" (написана не мной). В программе есть такая строка:
4000CC7D MOV ESI,[ECX+04]
В тот момент, когда выполняется этот оператор в регистре ECX содержится значение, которое надо передать "наружу" (т.е. передать моей программе (написаной мной), которая запущена паралельно этой). Если конкретнее, то ECX+04 - это адрес переменной, над которой надо будет взять контроль (WriteProcessMemory).
Я в асме совсем новичок, поэтому спрашиваю вашего совета. У меня возникла идея:
обьявить в программе "X" переменную addr типа даблворд, и вставить после оператора 4000CC7D такой:
mov addr, [ECX+04];
если у переменной addr адрес будет всегда одинаковым (на любой машине, после перезагрузок) то моя программа просто обратится по этому адресу и прочитает его содержимое. Как тогда обьявить addr? Достаточно ли простого addr dd ?


Дата: Мар 16, 2003 23:10:01

ну если прога не твоя, то придётся тебе использовать место где-нить в конце любой секции с атрибутами на запись... или исходник есть? если есть тогда небоись и делай как задумал.
Только помоему быстрее былобы просто попробывать, а потом спрашивать :)

вот ещё - mov addr, [ECX+04]; неправильная запись...


Дата: Мар 20, 2003 23:29:06

вот ещё - mov addr, [ECX+04]; неправильная запись...
А какая правильная?


Дата: Мар 21, 2003 00:29:23

mov eax, [ecx+4]
mov address, eax


Дата: Мар 24, 2003 08:11:34

Грузи прогу как отладчик; поставь перед этим опкодом int 3 и жди счастья. По приходу события EXCEPTION_BREAKPOINT глянь ecx выпавшего потока.


Дата: Мар 24, 2003 16:04:23

Похоже, придется делать так, как сказал 90210 - через отладчик. Дело в том, что я попробовал дизассемблировать программу "X" (забыл сказать - не программа это вовсе, а dll-ка) с помощью Ida375. Потом попытался откомпилировать полученный код (я даже не вносил изменений) с помощью ассемблера - вот тут и проблема. Каким бы ассемблером (tasm, masm, ...) я за нее не брался - везде ошибки (причем много). Один, вроде знающий, человек сказал что все правильно : "даже используя любой дизассемблер ты никогда не получишь работающего кода - он годится только для анализа. Правь hex-редактором". Правда это или нет - решил спросить у Вас воины дзена. Да и как править редактором, если мне надо ДОБАВИТЬ, а не ПРАВИТЬ код. Разве можно так (надо же сохранить длину файла)? Короче, голова кругом.


Дата: Апр 4, 2003 18:56:12

Где можно достать инфу по написанию своего отладчика?


Дата: Апр 5, 2003 13:40:34

Как перед этим кодом int 3 поставить?


Дата: Апр 8, 2003 23:41:34

???


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