디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

리버싱 도움을 요청합니다...

닥떵갤로그로 이동합니다. 2010.10.30 00:52:54
조회 231 추천 0 댓글 3


다음 함수는 3개의 인자를 받습니다( ex.    %d, %c, %d)
그러고 case문 처럼 첫번째 인자값으로 다른 주소로 이동한뒤
세번째 인자값을 어떤 숫자와 비교하고, 값이 같으면 두번째 인자도 비교,
모두 일치하면 다음 단계로 통과하는 함수입니다.

중요한 구문에는 주석으로 실행과정을 보이겠습니다.

중요한건 제가 제일 마지막에 두번째 인자를 비교하는 과정을 잘 이해 못하고있습니다...
이부분에 대해서는 마지막에 다시 언급하겠습니다.
일단 코드를 보시죠...
(일단 이 함수를 탈출하기 위한 입력값은 "4, d, 220" 입니다)

08048f56 <phase_3>:
 8048f56: 55                    push   %ebp
 8048f57: 89 e5                 mov    %esp,%ebp
 8048f59: 83 ec 38              sub    $0x38,%esp
 8048f5c: 8d 45 ec              lea    -0x14(%ebp),%eax
 8048f5f: 89 44 24 10           mov    %eax,0x10(%esp)
 8048f63: 8d 45 f7              lea    -0x9(%ebp),%eax
 8048f66: 89 44 24 0c           mov    %eax,0xc(%esp)
 8048f6a: 8d 45 f0              lea    -0x10(%ebp),%eax
 8048f6d: 89 44 24 08           mov    %eax,0x8(%esp)
 8048f71: c7 44 24 04 4b 9c 04  movl   $0x8049c4b,0x4(%esp)                     // 이 위까지는 세팅부분 입니다
 8048f78: 08 
 8048f79: 8b 45 08              mov    0x8(%ebp),%eax
 8048f7c: 89 04 24              mov    %eax,(%esp)
 8048f7f: e8 00 f9 ff ff        call   8048884 <__isoc99_sscanf@plt>                //여기서 3개의 인자를 받아옵니다
 8048f84: 83 f8 02              cmp    $0x2,%eax                                            //3단계를 뜻합니다. eax가 2보다 작으면 폭발
 8048f87: 7f 05                 jg     8048f8e <phase_3+0x38>
 8048f89: e8 a3 06 00 00        call   8049631 <explode_bomb>
 8048f8e: 83 7d f0 07           cmpl   $0x7,-0x10(%ebp)                               //첫번째 인자가 7보다 크면 폭발(첫번째 인자는 0~7)
 8048f92: 0f 87 fe 00 00 00     ja     8049096 <phase_3+0x140>
 8048f98: 8b 45 f0              mov    -0x10(%ebp),%eax
 8048f9b: ff 24 85 60 9c 04 08  jmp    *0x8049c60(,%eax,4)                        //첫번째 인자로 이동할 위치를 구합니다
 
 8048fa2: b8 72 00 00 00        mov    $0x72,%eax                                      //eax가 0이면 이곳으로 이동, eax에는 0x72를 넣어줍니다
 8048fa7: 81 7d ec 10 01 00 00  cmpl   $0x110,-0x14(%ebp)                     // 3번째 인자와 0x110을 비교합니다
 8048fae: 66 90                 xchg   %ax,%ax                                              // 왜 하는지 모르겠음
 8048fb0: 0f 84 f1 00 00 00     je     80490a7 <phase_3+0x151>                  // 비교값이 참이면 결과쪽으로 이동
 8048fb6: e8 76 06 00 00        call   8049631 <explode_bomb>                  //거짓이면 폭발
 
 8048fbb: b8 72 00 00 00        mov    $0x72,%eax                                   
 8048fc0: e9 e2 00 00 00        jmp    80490a7 <phase_3+0x151>               
 8048fc5: 81 7d ec 27 03 00 00  cmpl   $0x327,-0x14(%ebp)
 8048fcc: 8d 74 26 00           lea    0x0(%esi,%eiz,1),%esi
 8048fd0: 0f 84 cc 00 00 00     je     80490a2 <phase_3+0x14c>
 8048fd6: 66 90                 xchg   %ax,%ax
 8048fd8: e8 54 06 00 00        call   8049631 <explode_bomb>
 
 8048fdd: b8 70 00 00 00        mov    $0x70,%eax                                        
 8048fe2: e9 c0 00 00 00        jmp    80490a7 <phase_3+0x151>                  
 8048fe7: 81 7d ec 1c 02 00 00  cmpl   $0x21c,-0x14(%ebp)
 8048fee: 66 90                 xchg   %ax,%ax
 8048ff0: 0f 84 ac 00 00 00     je     80490a2 <phase_3+0x14c>
 8048ff6: 66 90                 xchg   %ax,%ax
 8048ff8: e8 34 06 00 00        call   8049631 <explode_bomb>
 
 8048ffd: b8 70 00 00 00        mov    $0x70,%eax
 8049002: e9 a0 00 00 00        jmp    80490a7 <phase_3+0x151>
 
 8049007: b8 63 00 00 00        mov    $0x63,%eax
 804900c: 81 7d ec 03 03 00 00  cmpl   $0x303,-0x14(%ebp)
 8049013: 0f 84 8e 00 00 00     je     80490a7 <phase_3+0x151>
 8049019: e8 13 06 00 00        call   8049631 <explode_bomb>
 
 804901e: b8 63 00 00 00        mov    $0x63,%eax
 8049023: e9 7f 00 00 00        jmp    80490a7 <phase_3+0x151>

 8049028: b8 64 00 00 00        mov    $0x64,%eax                                         //eax가 4이면 이곳으로 이동, eax에는 0x64를 넣어줍니다
 804902d: 81 7d ec dc 00 00 00  cmpl   $0xdc,-0x14(%ebp)                        //3번째 인자와 0xdc를 비교
 8049034: 74 71                 je     80490a7 <phase_3+0x151>                         //값이 같으면 이동
 8049036: e8 f6 05 00 00        call   8049631 <explode_bomb>                     //다르면 폭발

 804903b: b8 64 00 00 00        mov    $0x64,%eax
 8049040: eb 65                 jmp    80490a7 <phase_3+0x151>


 8049042: b8 73 00 00 00        mov    $0x73,%eax
 8049047: 81 7d ec 9e 00 00 00  cmpl   $0x9e,-0x14(%ebp)
 804904e: 66 90                 xchg   %ax,%ax
 8049050: 74 55                 je     80490a7 <phase_3+0x151>
 8049052: e8 da 05 00 00        call   8049631 <explode_bomb>
 
 8049057: b8 73 00 00 00        mov    $0x73,%eax
 804905c: eb 49                 jmp    80490a7 <phase_3+0x151>
 804905e: b8 77 00 00 00        mov    $0x77,%eax
 8049063: 81 7d ec 67 01 00 00  cmpl   $0x167,-0x14(%ebp)
 804906a: 74 3b                 je     80490a7 <phase_3+0x151>
 804906c: 8d 74 26 00           lea    0x0(%esi,%eiz,1),%esi
 8049070: e8 bc 05 00 00        call   8049631 <explode_bomb>
 
 8049075: b8 77 00 00 00        mov    $0x77,%eax
 804907a: eb 2b                 jmp    80490a7 <phase_3+0x151>
 804907c: b8 6a 00 00 00        mov    $0x6a,%eax
 8049081: 81 7d ec 0b 03 00 00  cmpl   $0x30b,-0x14(%ebp)
 8049088: 74 1d                 je     80490a7 <phase_3+0x151>
 804908a: e8 a2 05 00 00        call   8049631 <explode_bomb>
 
 804908f: b8 6a 00 00 00        mov    $0x6a,%eax
 8049094: eb 11                 jmp    80490a7 <phase_3+0x151>
 8049096: e8 96 05 00 00        call   8049631 <explode_bomb>
 
 804909b: b8 63 00 00 00        mov    $0x63,%eax
 80490a0: eb 05                 jmp    80490a7 <phase_3+0x151>
 80490a2: b8 70 00 00 00        mov    $0x70,%eax

 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 이동한 주소는 모두 이 다음줄입니다.
 80490a7: 3a 45 f7              cmp    -0x9(%ebp),%al                                            //2번째 인자와 al을 비교
 80490aa: 74 09                 je     80490b5 <phase_3+0x15f>                                //같으면 함수를 탈출합니다
 80490ac: 8d 74 26 00           lea    0x0(%esi,%eiz,1),%esi
 80490b0: e8 7c 05 00 00        call   8049631 <explode_bomb>                          //다르면 폭발합니다
 80490b5: c9                    leave 
 80490b6: c3                    ret   


제가 궁금한것은 위에서 언급하듯이
2번째 인자는 \'d\'가 들어가고
위에서 \'d\'와 %al이 비교되는데
%al에는 \'0x64\'가 들어가있으니
\'d\'와 \'0x04\'가 비교되는것이 아닌가요?
정말 난해합니다...
이 코드를 해석해 주실 용자분 어디 없을까요...ㅜㅜ

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
222036 게임법 연내 통과?? [2] 시불라미갤로그로 이동합니다. 10.12.03 80 0
222034 지렁이 버그알아냄 [12] 류들(210.91) 10.12.03 157 0
222033 해일리는 해일해일 하고 [4] prismatic갤로그로 이동합니다. 10.12.03 102 0
222032 횽들 매틀랩 이미지 불러오는거 관련해서 질문좀 할꼐 [2] Enky갤로그로 이동합니다. 10.12.03 111 0
222030 전 기름 쟁이 입니다. [2] 전기름쟁입니(1.224) 10.12.03 125 0
222029 공비횽 에러 [6] prismatic갤로그로 이동합니다. 10.12.03 136 0
222028 구니스는 대단해! [9] 세브(211.117) 10.12.03 179 0
222027 이 사이트에 타인에 의해 강제로 악성코드인가? 안좋은것이 심어졌다는데.. [1] 횽들도와줘요(218.148) 10.12.03 77 0
222026 던파나 DND같은 게임 만들때 [3] 마루■갤로그로 이동합니다. 10.12.03 128 0
222023 횽들 '해일리는 해일해일' <- 이 말 어떻게 알아? [5] 해일리갤로그로 이동합니다. 10.12.03 117 0
222022 와, 이 사이트 멋지다 [7] 양반씨갤로그로 이동합니다. 10.12.03 162 0
222020 컴퓨터 사양말인데요... [8] 호이요(180.227) 10.12.03 123 0
222019 자바관련 하나만 물어볼게~ [10] 유동ㅁㄴㄻㄴ(220.68) 10.12.03 121 0
222018 이클립스가 에딧플러스만큼 빨라졌어. 야호 [3] 머그컵갤로그로 이동합니다. 10.12.03 122 0
222017 읭ㄱ... [10] prismatic갤로그로 이동합니다. 10.12.03 87 0
222016 인셉션 보는 아저씨 재밋어. [6] 은행강도갤로그로 이동합니다. 10.12.03 103 0
222013 C#으로 풀 스크린 구현 하라는데 컨트롤들이 동적으로 늘어나는게 가능? [7] 찌뱅긔갤로그로 이동합니다. 10.12.03 583 1
222012 서울은 병맛나서 부산으로 학원 다닐려고 하는데... [6] 불꽃(124.153) 10.12.03 121 0
222005 횽들 학원 추천좀... [1] 불꽃(124.153) 10.12.03 90 0
222004 자바 포기하는 사람 많나요? [2] dd(175.197) 10.12.03 131 0
222003 C#이 mfc보다 좋은점이 뭐임 [10] 르하소갤로그로 이동합니다. 10.12.03 199 0
222002 [질문] 윈도우 GUI 배색문제 [2] prismatic갤로그로 이동합니다. 10.12.03 69 0
222001 error C2064: 항은 1개의 인수를 받아들이는 함수..가 뭐죠?? [4] 컴돌이(58.77) 10.12.03 17342 4
222000 C# out 키워드가 뭐임? [6] LightEach갤로그로 이동합니다. 10.12.03 475 1
221999 회사 홈피 해킹당함 [6] ㅇㅇ(115.140) 10.12.03 181 0
221998 이것이 진정 예술코드 인가... [11] new gay[max](183.105) 10.12.03 235 0
221997 API 고수형들 공통대화상자하는데 도와주세요 [1] 똥줄탄다(220.116) 10.12.03 115 0
221996 대등. rntjr갤로그로 이동합니다. 10.12.03 96 0
221995 해일리는 봄니다 [8] 아주아슬갤로그로 이동합니다. 10.12.03 148 0
221994 나 썐씨 si 인력표에 블랙리스트로 올라가 있을듯 [1] ltw갤로그로 이동합니다. 10.12.03 187 0
221993 음.. 프로그램 짜야되는데 무난한 프로그램 추처좀 해주세요~! [2] 호호아줌마(203.207) 10.12.03 79 0
221992 대겹 si는 팀만해도 존느 많은데 일반화하긴 어려울거다 [6] ltw갤로그로 이동합니다. 10.12.03 171 0
221991 SI 휘바 비젼이 있냐.. 홍어(58.122) 10.12.03 64 0
221990 역시 싸움을 잘해야 늙어서도 안전하다 [6] 아주아슬갤로그로 이동합니다. 10.12.03 179 0
221989 DLL 파일이 메모리에 적재되는 과정 잘 아는 사람 있어? [9] ByunJa갤로그로 이동합니다. 10.12.03 495 1
221988 이재용이 사장으로 발령났네 [7] 분당살람갤로그로 이동합니다. 10.12.03 146 0
221987 금요일에 DB변경요청서가 들어왔어. [7] 해일리갤로그로 이동합니다. 10.12.03 207 0
221986 event좀 알려주실분 ㅠ (118.131) 10.12.03 39 0
221985 헐... 시발 카타르에서 월드컵 하는구나. [11] 아주아슬갤로그로 이동합니다. 10.12.03 128 0
221984 S*S , C*S , *&C 보다 더 죹같은거 .. [6] 임베디드(115.94) 10.12.03 119 0
221983 아... 야동 그만 봐야겠어 ㅠ.ㅠ [2] rntjr갤로그로 이동합니다. 10.12.03 219 0
221980 비행기와 프로그램의 다른 점 [3] 머그컵갤로그로 이동합니다. 10.12.03 88 0
221978 자바나 JSP 기초부터 중급까지 알수 있는 사이트 없나요 ?? [3] 미츠도모에갤로그로 이동합니다. 10.12.03 101 0
221976 ??? [7] 햬일리갤로그로 이동합니다. 10.12.03 101 0
221975 치.. 다들 실망이다.. [14] Mlnryu갤로그로 이동합니다. 10.12.03 169 0
221974 SVN 잘못 썼다가 프로그램 날려 먹었음. 아오... [4] 찌뱅긔갤로그로 이동합니다. 10.12.03 673 1
221972 이번 달에 190만원 들어왔는데 [10] 분당살람갤로그로 이동합니다. 10.12.03 182 0
221971 아, 너구리 짜증나네. [9] Minryu갤로그로 이동합니다. 10.12.03 159 0
221970 고뿔에 걸리셨소. [2] 머그컵갤로그로 이동합니다. 10.12.03 55 0
221968 sloth_ 횽 소환 [8] 해일리갤로그로 이동합니다. 10.12.03 82 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2