Обновление: Поскольку я могу получить правильный адрес в реестре, в который я хочу перейти/позвонить, я думаю, что лучшим вариантом было бы выяснить способ самообслуживания изменение кода приводит к регистру jmp/call. Ex. FFD6 call esi Кто-нибудь сможет дать мне несколько указателей или пример в сборке, как получить полученный FFD6?Обратный ход в стеке без jmp
Я возился с эксплойтом и с трудом возвращался в стек из-за плохих персонажей. Мне нужно вернуться назад ~ 460 байт, чтобы перейти к началу моего буфера.
Вот список плохих персонажей:
\ x0a \ x0D \ x1a \ x80 \ x82 \ x83 \ x84 \ x85 \ x86 \ x87 \ x88 \ x89 \ X8A \ x8b \ x8c \ x8e \ x8f \ x91 \ x92 \ x93 \ x94 \ x95 \ x96 \ x97 \ x98 \ x99 \ X9a \ X9b \ x9c \ x9e \ x9f \ xc0 \ xc1 \ xc2 \ xc3 \ XC4 \ xc5 \ xc6 \ xc7 \ xc8 \ xc9 \ XCA \ XCB \ XCC \ XCD \ xce \ XCF \ xd0 \ xd1 \ XD2 \ XD3 \ xd4 \ xd5 \ xd6 \ xd7 \ xd8 \ xd9 \ XDA \ XDB \ XDc \ XDD \ XDE \ XDF \ xe0 \ xe1 \ XE2 \ XE3 \ xe4 \ xe5 \ XE6 \ xe7 \ X Е8 \ xE9 \ хеа \ xeb \ XEC \ фиксировано \ Xee \ ХеР \ xf0 \ XF1 \ xf2 \ xf3 \ XF4 \ xf5 \ XF6 \ xf7xf8 \ xf9 \ РФА \ XFB \ хк \ xfd \ xfe \ xff
Я ограничен x86 \ alpha_mixed с несколькими исключениями, например x81 & x8d. Единственный способ, которым я смог вернуться в стек, - \ x74 \ x81 (которые являются допустимыми символами), но я должен был сделать это 4 раза, чтобы вернуть ~ 460. Это не было бы самой большой сделкой, за исключением того, что мне будет очень сложно сегментировать мой шеллкод, когда мне уже нужно его закодировать в alpha_mixed.
Я не мастер сборки, так есть ли какой-либо другой способ, который я пропускаю, чтобы я мог перемещаться напрямую без jmp или вызова (FF)?
самомодифицирующийся код разрешено? – Jester
Да, если у него нет плохих персонажей. Я работал над списком плохих персонажей, когда думаю, что нашел свое решение: omlette egghunter. Это должно позволить мне прыгать и комбинировать кусочки моего shellcode. – PaulthePirate
Кстати, почему разрешен '\ x81'? Каков список плохих персонажей? :) – Jester