Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.185.199] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
привет всем.
подскажите если знаете, как сдлеать возможным запись в сегмент кода для Win32 в пользовательском режиме (ring 3) ? я выставил для текущего процесса DEBUG привелегию через апишные функции. но все одно при попытке записи в сегмент кода выскакивает ексепшен !!! если есть какие идеи, буду благодарен ! Добавлено самое главное забыл, что писать должен процесс сам в себя ! |
Сообщ.
#2
,
|
|
|
WriteProcessMemory вообщето...
|
Сообщ.
#3
,
|
|
|
WriteProcessMemory известно, но какая в сущности разница.
вот такой имеется код. EncryptStart2 и EncryptEnd2 это метки в самом сегменте кода. по идее долэжно работать!!! но.... почему ? DecryptProc proc uses edi lpStart, lpEnd: DWORD mov edi, lpStart .WHILE edi != lpEnd inc edi xor byte ptr[edi-1], 5 not byte ptr[edi-1] .ENDW ret DecryptProc endp start: invoke DecryptProc, offset EncryptStart2, offset EncryptEnd2 |
Сообщ.
#4
,
|
|
|
врете вы все
нада просто при компиляции дать сегменту кода атрибуты реад-врите-ехекуте и все или же непосредственно в процессе изменить атрибуты участка кода |
Сообщ.
#5
,
|
|
|
милый человек, поделись плз. как ето сделать ?
"или же непосредственно в процессе изменить атрибуты участка кода" честное слово, чего то не догоняю. а как ето можно изменить атрибуты участка кода ? сегмента кода еще можно наверное , а ето как ? очень надо !!!!!!!!!! |
Сообщ.
#6
,
|
|
|
Блин я то думал писать в любой экзешник
bench, смотри дерективы компилятора, ты каким пользуешься? |
Сообщ.
#7
,
|
|
|
элементарно Ватсон
лирическое отступление, обычно сегмент кода имеет атрибуты реад-ехекуте тоесть оттуда можно читать и запускать и вот писать туда нельзя, будет ексцепшин 100% но если мы используем функ VirtualProtect то проблема решится )) http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/virtualprotect.asp |
Сообщ.
#8
,
|
|
|
я юзаю MASM.
сейчас просмотрел, но такой директивы не нашел. Добавлено всем пасибо !!!! оказвается можно через линковщик задать атрибуды сегмента. во как оно делается: link.exe /SUBSYSTEM:WINDOWS /section:.text,ERW body.obj |
Сообщ.
#9
,
|
|
|
есть еще вариант - весь код хранить в секции данных - я так делаю :
.386 .model flat, stdcall ;; это тасм, но с масмом все тоже самое .data start: extrn ExitProcess: proc push eax call ExitProcess end start |
Сообщ.
#10
,
|
|
|
Цитата cqwerty @ это тасм, но с масмом все тоже самое Фиг. Use of register assumed to error. Низя это в MASM, надо /section:.text,ERW А вот данные в коде - пжалста, хотя это логично. |
Сообщ.
#11
,
|
|
|
TauxCanolf, млин, ну никто же не мешает тебе использовать какую-нить тулзу типа pewrsec?
|
Сообщ.
#12
,
|
|
|
Хм...
а функцию The VirtualProtect function changes the protection on a region of committed pages in the virtual address space of the calling process. BOOL VirtualProtect( LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect ); flNewProtect = PAGE_EXECUTE_READWRITE; З.Ы. И не забыть, что lpflOldProtect, несмотря на то, что пишут в MSDN, не может быть NULL. |
Сообщ.
#13
,
|
|
|
Цитата cqwerty @ TauxCanolf, млин, ну никто же не мешает тебе использовать какую-нить тулзу типа pewrsec? Мне гораздо проще написать 17 буковок в директиве линкеру. |
Сообщ.
#14
,
|
|
|
Цитата TauxCanolf @ Мне гораздо проще написать 17 буковок в директиве линкеру. Все ж таки rcz привел более правильный и логичный вариант. Первоначально IsBadWritePtr и следуещее (по отказу) VirtualProtect ... |
Сообщ.
#15
,
|
|
|
Цитата Rouse_ @ Все ж таки rcz привел более правильный и логичный вариант. Первоначально IsBadWritePtr и следуещее (по отказу) VirtualProtect ... Это универсальный вариант. Т.е. для ЛЮБОЙ, произвольной области памяти(выделенной конечно). А если доподлинно известно, что своя, родная секция разрешена на запись, вполне можно писать туда без уточнения (типа ты прежде чем позвонить другу каждый раз пробиваешь, его ли это номер ) |