![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]()
Доброго времени суток мастера Assembler'исты, нужна маленькая помощь. При попытке hook'а "*.dll" в "*.exe" приложение, возникает такая проблема как Access Violation when reading... Не могу понять по какой причине! (Assembler изучаю не долго, недели две от силы, пожалуйста не ругать если что не так, новичок)
Метод hook'а: Код:
Код:
Последний раз редактировалось coNsept; 28.07.2010 в 09:49. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
![]()
1. То что Вы хотите сделать никакой вовсе не хук, а динамическая подгрузка длл в адресное пространство Вашего процесса
2. Вы пишете в секцию только для чтения, похоже, вот Вам и вылетает поэтому исключение, что как бы говорит нам Обращайтесь ![]()
Нет, ну правда..
Последний раз редактировалось yuran666666; 30.07.2010 в 09:05. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]()
Спасибо, разобрался! Действительно, секция только для чтения.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
![]()
Кстати, чтобы задать атрибуты секции при компилировании в масме, можете воспользоваться аргументом линкера /SECTION
например для секции кода батник будет выглядеть так примерно: c:\masm32\bin\ml.exe" /c /coff *.asm c:\masm32\bin\Link.exe" /SUBSYSTEM:WINDOWS /SECTION:.text,RWE *.obj RWE-это и будут атрибуты секции .text после компиляции
Нет, ну правда..
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]()
Возникла следующая проблема, но уже с "access violation read", с тем условием что секции были установлены в read и write.
Код:
Просмотр со стороны отладчика Код HTML:
0970100C > 55 PUSH EBP 0970100D 8BEC MOV EBP,ESP 0970100F 83C4 FC ADD ESP,-4 09701012 8B0D F85C8C00 MOV ECX,DWORD PTR DS:[8C5CF8] 09701018 894D FC MOV DWORD PTR SS:[EBP-4],ECX 0970101B 6A 01 PUSH 1 0970101D 6A 00 PUSH 0 0970101F 68 00290000 PUSH 2900 09701024 68 01260000 PUSH 2601 09701029 68 697B0000 PUSH 7B69 0970102E 8D05 04307009 LEA EAX,DWORD PTR DS:[9703004] 09701034 50 PUSH EAX 09701035 FF15 00307009 CALL DWORD PTR DS:[9703000] ; 006C167E - Вызов той самой процедуры 0970103B 33C0 XOR EAX,EAX 0970103D 3E:837D 08 00 CMP DWORD PTR DS:[EBP+8],0 09701042 75 07 JNZ SHORT MiniMap.0970104B 09701044 B8 01000000 MOV EAX,1 09701049 EB 28 JMP SHORT MiniMap.09701073 0970104B 3E:837D 08 02 CMP DWORD PTR DS:[EBP+8],2 09701050 75 07 JNZ SHORT MiniMap.09701059 09701052 B8 01000000 MOV EAX,1 09701057 EB 1A JMP SHORT MiniMap.09701073 09701059 3E:837D 08 03 CMP DWORD PTR DS:[EBP+8],3 0970105E 75 07 JNZ SHORT MiniMap.09701067 09701060 B8 01000000 MOV EAX,1 09701065 EB 0C JMP SHORT MiniMap.09701073 09701067 3E:837D 08 1E CMP DWORD PTR DS:[EBP+8],1E 0970106C 75 05 JNZ SHORT MiniMap.09701073 0970106E B8 01000000 MOV EAX,1 09701073 8BEC MOV EBP,ESP 09701075 5D POP EBP 09701076 C9 LEAVE 09701077 C3 RETN Последний раз редактировалось coNsept; 07.08.2010 в 04:24. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
![]()
что то вообще непонятно, что Вы имеете тут ввиду..
вы создаете длл, это понятно, данная длл по видимому должна экспортировать одну функцию - Init в этой функции очень чертовски непонятен адрес непонятной функции PLoadImage DD 006C167EH - адреса же не должны браться с потолка ![]() вообщем Вы инструкцией call передаете управление на адрес 006C167EH, я лично абсолютно незнаю что у Вас там и есть ли что-то вообще.. а Вы? могу посоветовать Iczeliona, после ознакомления хотя бы с основными темами, такие вопросы пропадут сами собой ![]()
Нет, ну правда..
|
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]() Цитата:
Последний раз редактировалось coNsept; 08.08.2010 в 04:33. |
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
![]()
Вообщем на сколько я понял, эксе "экспортирует" функцию для длл, которую он сам же и подгрузил?
Уважаемый, если это не извращение, то уж и не знаю что тогда.. И задавать адреса вызовов процедур в виде ее конкретного адреса - не есть хороший тон... Таки почитайте все же несколько букварей по ассемблеру
Нет, ну правда..
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
![]()
Хорошо, посоветуйте либо дайте чет почитать, как правильно передать управление из .dll, процедуре из .exe. За ранее благодарен за любую помощь.
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
![]()
цикл статей:
http://wasm.ru/publist.php?list=1 в частности по длл: http://wasm.ru/article.php?article=1001017 в частности по хукам: http://wasm.ru/article.php?article=1001024 а вообще читайте от начала до конца весь цикл..
Нет, ну правда..
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
HOOK | zumm | Общие вопросы Delphi | 2 | 29.03.2010 20:21 |
Глобальный HOOK | vma | Общие вопросы C/C++ | 0 | 25.03.2010 11:49 |
Hook на копирование. | Dj_smart | Win Api | 4 | 26.05.2008 00:22 |
Hook... | Roof | Общие вопросы Delphi | 5 | 06.11.2007 16:25 |
Hook off? | Сильванович Михаил | Win Api | 1 | 03.04.2007 16:25 |