|
|
| Посл.отвђт | Сообщен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 |