프로그래밍

 3198, 1/160 회원가입  로그인  
   bigshott
   어셈코드 질문 드립니다.

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2791 [복사]


리눅스에서 쉘코드 만드는데요~

크게는 이해가 가는데, 세부한 부분이 어렵네요 ㅜㅠ

소스부분 :  movb   $0x0,0x7(%esi)  

리눅스로 쉘코드 만드는데요~

위에 보면 $0x0 을 0x7(%esi) 즉, esi의 주소에서 7번째 위치에 0을 넣는거라고 하는데요~


esi위치 |  1  |  2  |  3  |  4  |  5  |  6  |  7  |   8  |              <-- 7번에 위치에 가는게 맞는거 아닌가요?



그런데, 다른 문서들 보면 전부 8 번 위치에 0 이 저장된다고 되어 있습니다.

아 도무지 이해가 안가네요 ㅜㅠ

아시는분들 조언 좀 부탁드립니다.

수고하세요~


  Hit : 4268     Date : 2010/12/05 04:37



    
stares 0x0 부터 차례로 시작하니 0x7은 8에 저장되는거아닌가요?
0, 1, 2, 3, 4, 5, 6, (7)
esi 1, 2, 3, 4, 5, 6, 7, (8)
2010/12/05  
bigshott esi위치가 0 , 1, 2, 3, 4, 5, 6, 7, 8

그래서 7번에 들어가야 되는거 아닌가요?

0, 0 , 1 , 2, 3, 4, 5, 6, 7 이렇게 되는건가요? ㅜㅠ

어떻게 찍어볼수도 없고 힘드네요 ㅜㅠ

답변 감사드립니다.

좀 더 찾아봐야겠네요 ㅜㅠ
2010/12/06  
stares esi는 1부터 시작해서 12345678 에 8에 저장되지 않나요?
(아닌가/ㄱ-)
2010/12/06  
LCF 저...1바이트 짜리면...8비트니깐...
i=0;i++;
0x0i~~~0x07에서 0x07이 8번째 이니깐8번째 들어 가야 되는거 아닌가요...? 제가 어셈은 볼줄 몰라서 더 질문은 못하겠지만...요렇고롬 레지스트에 들어 가잖아요...; esi |0|1|2|3|4|5|6|7|
0번이 1번째 쭉쭉가서 7번이 8번째...ㅎ;

모르것다..ㅠ-ㅠ도움이 못되서 죄송합니다....
2010/12/06  
멍멍 esi의 위치를 0으로 본다면 7번이 맞습니다.
즉, 현재 esi의 값이 0xbfff0000이라면, 0xbfff0007이 0이 됩니다.
어셈 문법이 애매할 때엔 debugger 상에서 테스트해보시면 명확하게 확인하실 수
있습니다~
2010/12/07  
stares 시작지점이 몇인지 알아야되는거같네요..보니까..
그 문서에서는 esi위치를 1로 본거같은데.
2010/12/07  
bigshott 답변들 감사드립니다. 디버거 연구해서 확인해 봤습니다 ㅜㅠ

0x0부터 시작하는군요

0, 1, 2, 3, 4, 5, 6, 7
/ b i n / s h \n

이렇게 됩니다. 0x0 자리에 1을 넣어봤더니
1bin/sh 가 되는군요.

다들 신경써 주셔서 감사합니다. 즐거운 하루 되세요 ^^
2010/12/07