2011-07-28 5 views
4

널 프리 쉘 코드에 쓴 어셈블리 프로그램을 변환하려고합니다.널없는 쉘 코드

그러나 특정 지시 사항에 대해이 문제를 어떻게 해결해야할지 확신 할 수 없습니다. 는 (인텔 문법에서) 그들 중 일부는 다음과 같습니다

push 0x1000 

mov BYTE [eax],0x31 

내가 EAX inc를 위해 천 호출을 사용하지 않도록합니다. xoring 값을 가진 창조적 인 무언가를 생각하고 있었고 두 번째 경우에는 8 바이트 만 상수로 만들 수있는 플래그가있는 것 같았습니다.

도움을 주시면 감사하겠습니다.

답변

2
push 0x1000 

당신이 (당신이 플래그를 건드리지 괜찮다) 레지스터를 마련 할 수있는 경우, 같은 대한 방법 :

xor eax, eax 
inc eax 
shl eax, 12 
push eax 

mov BYTE [eax],0x31 

여기 제로에서 오지 않는다 상수이지만 주소 지정 모드에서. 시도 :

xchg eax, ecx 
mov BYTE [ecx],0x31 
xchg eax, ecx