Форум: "Начинающим";
Текущий архив: 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