![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Assembler
niko © (2006-12-19 17:50:00)Известен адрес функции в другой dll. Как перейти на неё (не call) и передать ей в качестве параметра какую нибудь переменную, ну к примеру DWORD
oxffff (2006-12-20 08:54:00) [1]
> niko © (19.12.06 17:50)
> Известен адрес функции в другой dll. Как перейти на неё
> (не call) и передать ей в качестве параметра какую нибудь
> переменную, ну к примеру DWORD
> у меня там окажется то что надо - не надо меня совсем уж
> за дурака держать
> niko © (19.12.06 19:01) [17]
> Если бы ни чего не мешало, наверное я бы не стал так изврашаться
> - садо-маза не люблю. Но в данном случае по другому ни как,
> объяснять что к чему смысла я думаю нет.
Ты сначала подумай, что ты вообще хочешь.
Сергей М. (2006-12-20 08:24:00) [2]
> Известен адрес функции в другой dll
Кроме этого должны быть еще известны параметры ф-ции и соглашения о ее вызове.
> Как перейти на неё (не call)
Куча способов, начиная с jmp и push+ret
GrayFace (2006-12-19 20:29:00) [3]Anatoly Podgoretsky © (19.12.06 19:51) [18]
Да и рано тебе ассемблером заниматься, если основ не знаешь.
Да нет. Вот только основы, типа нажатия Ctrl+Shift+C надо знать.
Anatoly Podgoretsky (2006-12-19 19:51:00) [4]> niko (19.12.2006 19:01:17) [17]
Хотел посоветовать, но теперь желания нет.
Да и рано тебе ассемблером заниматься, если основ не знаешь.
niko (2006-12-19 19:01:00) [5]Если бы ни чего не мешало, наверное я бы не стал так изврашаться - садо-маза не люблю. Но в данном случае по другому ни как, объяснять что к чему смысла я думаю нет.
DrPass (2006-12-19 18:55:00) [6]
> у меня там окажется то что надо - не надо меня совсем уж
> за дурака держать
За дурака тебя никто не держит. Непонятно только, зачем этот изврат. Что мешает, например, из (3) вернуться в (2), а там сделать человеческий ret в (1) без игрушек со стеком.
niko (2006-12-19 18:49:00) [7]Ну чтож, попробую покапать в ту сторону.
Спасибо!
Eraser (2006-12-19 18:47:00) [8]> [13] niko © (19.12.06 18:44)
а! Sha наверное угадал! перехват API ? ) так тогда ты не в ту сторону капаешь )
niko (2006-12-19 18:44:00) [9]
> [11] Eraser © (19.12.06 18:34)
мне не надо что бы функция, которцю я вызываю (3), возвращалась не "сюда" (2), она должна вернуться в ту (1) которая вызвала данную (2).
вот тока не знаю поймёшь чё я имею в види.
Sha (2006-12-19 18:42:00) [10]Перехват API: http://www.wasm.ru
Eraser (2006-12-19 18:34:00) [11]> [10] niko © (19.12.06 18:31)
так а зачем изобретать велосипеды то, когда есть инструкция call?
niko (2006-12-19 18:31:00) [12]у меня там окажется то что надо - не надо меня совсем уж за дурака держать
DrPass (2006-12-19 18:27:00) [13]
> она запихивает в стек адрес возврата - а мне отого делать
> не надо
Замечательная идея. А когда вызываемая процедура дойдет до ret, она сразу перелетит на один уровень вызова вверх (или вообще в никуда). А так как на стеке окажется черт знает что, программа просто развалится.
Джо (2006-12-19 18:20:00) [14]> [6] niko © (19.12.06 18:18)
> ну я впринцепе и перехажу по JMP'у.
>
> А вот про соглашения если можно по подробнее. Как бы ты
> сделал у себя на своей машине? Глядишь я и соображу
Параметры могут передавать разными способами. Могут через стек (push), могут в регистрах общего назначения. Кроме того, порядок передачи параметров может быть разным.
Eraser (2006-12-19 18:20:00) [15]> [6] niko © (19.12.06 18:18)
> Как бы ты сделал у себя на своей машине?
а при чем здесь машина? :)
> А вот про соглашения если можно по подробнее.
см. в гугле/справке по ключевым словам: stdcall, register, cdecl
+ http://en.wikipedia.org/wiki/X86_calling_conventions
niko (2006-12-19 18:18:00) [16]ну я впринцепе и перехажу по JMP'у.
А вот про соглашения если можно по подробнее. Как бы ты сделал у себя на своей машине? Глядишь я и соображу.
Eraser (2006-12-19 18:14:00) [17]> [4] niko © (19.12.06 18:11)
а jmp чем не подходит? )
> как правельно передоть параметры - Cardinal
все зависит от соглашения о вызовах, принятом в программе.
niko (2006-12-19 18:11:00) [18]она запихивает в стек адрес возврата - а мне отого делать не надо.
да и дело то не в том, как правельно передоть параметры - Cardinal
Джо (2006-12-19 18:08:00) [19]> [2] niko © (19.12.06 18:07)
> call - вызывает ф-ю, по её окончанию возвращается.
> мне возвращапься не надо
CALL никуда не «возвращается», к сведению.
niko (2006-12-19 18:07:00) [20]call - вызывает ф-ю, по её окончанию возвращается.
мне возвращапься не надо