Здрасте всем не спящим. Сегодня поведаю Вам об очень интересном трюке с нулевой памятью.
Суть вопроса:
более не приводит к фолту ибо есть способ выделения памяти по нулевому адресу. Как было выяснено в нашей любимой конфочке, Индек знал об этом уже несколько лет (кто бы сомневался) и упорно помалкивал. Но доблестные кетайцы всеже разведали эту фишку и поделились с нами. Для этого нужно лишь спуститься пониже WinApi и обратиться к NativeApi. Итак кодес:
получается что мы просим у системы 5000h байт памяти по адресу 1000h в своем адресном пространстве, но т.к. адрес лежит "между-между" система его округляет вниз т.е. до нуля и спокойненько выделяет нужный кусочек памяти. Согласно всеми нами любимому мсдн'у, память в диапазоне 0-10000h не подлежит каким либо операциям, как видите это не так. Таким способом можно выделять память не только в своем процессе, но и в чужом, проверенно. Как это юзать думайте сами, самое простое антиэмуляция.
waahoo 2012 © Специально для DamageLab без разрешения неизвестного кетайского хакера.
Суть вопроса:
Код:
xor eax,eax
mov eax,[eax]
Код:
local pBuf:dword, cbBuf:dword
...
mov pBuf,1000h
mov cbBuf,5000h
invoke ZwAllocateVirtualMemory,-1,addr pBuf,0,addr cbBuf,MEM_TOP_DOWN or MEM_RESERVE or MEM_COMMIT,PAGE_READWRITE
waahoo 2012 © Специально для DamageLab без разрешения неизвестного кетайского хакера.