Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

Assembler   Найти похожие ветки 

 
niko ©   (2006-12-19 17:50) [0]

Известен адрес функции в другой dll. Как перейти на неё (не call) и передать ей в качестве параметра какую нибудь переменную, ну к примеру DWORD


 
Джо ©   (2006-12-19 18:04) [1]

Что значит «перейти (не call)»?


 
niko ©   (2006-12-19 18:07) [2]

call - вызывает ф-ю, по её окончанию возвращается.
мне возвращапься не надо


 
Джо ©   (2006-12-19 18:08) [3]

> [2] niko ©   (19.12.06 18:07)
> call - вызывает ф-ю, по её окончанию возвращается.
> мне возвращапься не надо

CALL никуда не «возвращается», к сведению.


 
niko ©   (2006-12-19 18:11) [4]

она запихивает в стек адрес возврата - а мне отого делать не надо.

да и дело то не в том, как правельно передоть параметры - Cardinal


 
Eraser ©   (2006-12-19 18:14) [5]

> [4] niko ©   (19.12.06 18:11)

а jmp чем не подходит? )

> как правельно передоть параметры - Cardinal

все зависит от соглашения о вызовах, принятом в программе.


 
niko ©   (2006-12-19 18:18) [6]

ну я впринцепе и перехажу по JMP"у.

А вот про соглашения если можно по подробнее. Как бы ты сделал у себя на своей машине? Глядишь я и соображу.


 
Eraser ©   (2006-12-19 18:20) [7]

> [6] niko ©   (19.12.06 18:18)


> Как бы ты сделал у себя на своей машине?

а при чем здесь машина? :)

> А вот про соглашения если можно по подробнее.

см. в гугле/справке по ключевым словам: stdcall, register, cdecl

+ http://en.wikipedia.org/wiki/X86_calling_conventions


 
Джо ©   (2006-12-19 18:20) [8]

> [6] niko ©   (19.12.06 18:18)
> ну я впринцепе и перехажу по JMP"у.
>
> А вот про соглашения если можно по подробнее. Как бы ты
> сделал у себя на своей машине? Глядишь я и соображу

Параметры могут передавать разными способами. Могут через стек (push), могут в регистрах общего назначения. Кроме того, порядок передачи параметров может быть разным.


 
DrPass ©   (2006-12-19 18:27) [9]


> она запихивает в стек адрес возврата - а мне отого делать
> не надо

Замечательная идея. А когда вызываемая процедура дойдет до ret, она сразу перелетит на один уровень вызова вверх (или вообще в никуда). А так как на стеке окажется черт знает что, программа просто развалится.


 
niko ©   (2006-12-19 18:31) [10]

у меня там окажется то что надо - не надо меня совсем уж за дурака держать


 
Eraser ©   (2006-12-19 18:34) [11]

> [10] niko ©   (19.12.06 18:31)

так а зачем изобретать велосипеды то, когда есть инструкция call?


 
Sha ©   (2006-12-19 18:42) [12]

Перехват API: http://www.wasm.ru


 
niko ©   (2006-12-19 18:44) [13]


>  [11] Eraser ©   (19.12.06 18:34)


мне не надо что бы функция, которцю я вызываю (3), возвращалась не "сюда" (2), она должна вернуться в ту (1) которая вызвала данную (2).

вот тока не знаю поймёшь чё я имею в види.


 
Eraser ©   (2006-12-19 18:47) [14]

> [13] niko ©   (19.12.06 18:44)

а! Sha наверное угадал! перехват API ? ) так тогда ты не в ту сторону капаешь )


 
niko ©   (2006-12-19 18:49) [15]

Ну чтож, попробую покапать в ту сторону.
Спасибо!


 
DrPass ©   (2006-12-19 18:55) [16]


> у меня там окажется то что надо - не надо меня совсем уж
> за дурака держать

За дурака тебя никто не держит. Непонятно только, зачем этот изврат. Что мешает, например, из (3) вернуться в (2), а там сделать человеческий ret в (1) без игрушек со стеком.


 
niko ©   (2006-12-19 19:01) [17]

Если бы ни чего не мешало, наверное я бы не стал так изврашаться - садо-маза не люблю. Но в данном случае по другому ни как, объяснять что к чему смысла я думаю нет.


 
Anatoly Podgoretsky ©   (2006-12-19 19:51) [18]

> niko  (19.12.2006 19:01:17)  [17]

Хотел посоветовать, но теперь желания нет.
Да и рано тебе ассемблером заниматься, если основ не знаешь.


 
GrayFace ©   (2006-12-19 20:29) [19]

Anatoly Podgoretsky ©   (19.12.06 19:51) [18]
Да и рано тебе ассемблером заниматься, если основ не знаешь.
Да нет. Вот только основы, типа нажатия Ctrl+Shift+C надо знать.


 
Сергей М. ©   (2006-12-20 08:24) [20]


> Известен адрес функции в другой dll


Кроме этого должны быть еще известны параметры ф-ции и соглашения о ее вызове.


> Как перейти на неё (не call)


Куча способов, начиная с jmp и push+ret


 
oxffff ©   (2006-12-20 08:54) [21]


> niko ©   (19.12.06 17:50)  
> Известен адрес функции в другой dll. Как перейти на неё
> (не call) и передать ей в качестве параметра какую нибудь
> переменную, ну к примеру DWORD


> у меня там окажется то что надо - не надо меня совсем уж
> за дурака держать


> niko ©   (19.12.06 19:01) [17]
> Если бы ни чего не мешало, наверное я бы не стал так изврашаться
> - садо-маза не люблю. Но в данном случае по другому ни как,
>  объяснять что к чему смысла я думаю нет.


Ты сначала подумай, что ты вообще хочешь.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.075 c
2-1166456508
sat
2006-12-18 18:41
2007.01.07
как свернуть программу в системный трей


15-1166092041
Vlad Oshin
2006-12-14 13:27
2007.01.07
MySql и/или MSSQL Логи. Как делать?


2-1166195111
FIL-23
2006-12-15 18:05
2007.01.07
как вставить рисунок в текст


15-1166128677
Real
2006-12-14 23:37
2007.01.07
Аналоговые часы на десктопе


1-1163594193
MsGuns
2006-11-15 15:36
2007.01.07
Определить позицию курсора в ячейке грида





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский