디시인사이드 갤러리

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

갤러리 본문 영역

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

닥떵갤로그로 이동합니다. 2010.10.30 00:52:54
조회 232 추천 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/06/24 - -
공지 프로그래밍 갤러리 이용 안내 [71] 운영자 20.09.28 35818 62
2717065 두근두근 국비첫날 ㅎㅎ ㅇㅇ(222.108) 08:51 1 0
2717064 이직하고만다따흐흑ㅠㅠ [2] 보법E노무현갤로그로 이동합니다. 08:33 9 0
2717063 회사에 나밖에 출근 안하니 쓸쓸하네 프갤러(211.234) 08:25 11 0
2717062 하나는 알고 둘은 모르네 도리스아sk(220.74) 08:20 14 0
2717060 류류햄나왜미워해 보법E노무현갤로그로 이동합니다. 08:02 14 0
2717059 다혜씨 가족의 태국 이주를 도왔다는 의혹을 받고 있는 중소벤처기업진흥공단 130ㅁ(211.170) 08:00 13 0
2717058 억울한 진실’이라는 제목과 함께 문자메시지로 475만여건 발송했다. 130ㅁ(211.170) 07:55 11 0
2717057 안양해솔장애인고등학교서담 넘었을 때 도리스아(220.74) 07:52 14 0
2717056 이력서썻는데좀더채울껄… [2] 보법E노무현갤로그로 이동합니다. 07:44 34 0
2717054 출근해야징 주아갤로그로 이동합니다. 07:14 51 0
2717053 류류스럽다 보법E노무현갤로그로 이동합니다. 07:04 17 0
2717051 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 06:45 17 0
2717049 코딩 테스트 어떻게 준비해야할까요? ㅇㅇ(118.32) 05:34 27 0
2717048 ❤+✨⭐+나님 시작합니당⭐+✨❤+ ♥냥덩Pay♥갤로그로 이동합니다. 05:11 31 0
2717045 벌레가 넘 무서워 냥냥울엇오.. ♥데스노트냥덩♥갤로그로 이동합니다. 04:10 41 0
2717042 음기 충전 발명도둑잡기갤로그로 이동합니다. 03:46 21 0
2717041 나님.. 다시 주무시려합니당.. 제발 벌레 없길 ♥데스노트냥덩♥갤로그로 이동합니다. 03:46 39 0
2717040 마지막으로 친구와 대화한 시점..txt ㅇㅇ갤로그로 이동합니다. 03:43 42 1
2717039 면접 다니면서 느낀건데 도커 관련 질문 많이 들어오더라 [3] ㅇㅇ(211.246) 03:37 78 0
2717038 2023년 부모 등 직계 존속으로부터 상속을 받은 사람은 19,944명으 봐갤러(211.170) 03:11 30 1
2717037 랜€⨇☓덤⮘长⢉테壘⦻麐스眞△◩트迦æ鄯 [1] ㅇㅇ(61.105) 03:10 33 0
2717036 랜⦫煅▟덤⡚⢡⊏테⍻⚅姊스黙嚜⛪트記甜⍔ [1] ㅇㅇ(182.210) 03:10 23 0
2717035 랜⧦淳璝덤衇轏⎭테呿⧄⃕스辇華▶트尾駆魾 [1] ㅇㅇ(58.234) 03:10 25 0
2717034 랜‒杸鏃덤蠇氏贏테阸豻鍼스⑷⋖聯트玟靗⏟ ㅇㅇ(118.235) 03:10 14 0
2717033 랜⣫ↂ產덤⏊諄☄테⏓⬶蜂스夋⡹轺트菡贆⛜ ㅇㅇ(175.203) 03:10 11 0
2717032 랜⪡堜譞덤檫≙⮨테⑕⥠⋯스魡♨⛥트摸掠氝 ㅇㅇ(175.192) 03:10 11 0
2717031 랜⩾錔璖덤壩顫⌥테仕⓶➢스➮⛶✴트≶␳≵ ㅇㅇ(14.56) 03:10 12 0
2717029 랜✄迆讜덤阣仑烧테⇃趨⫬스浯洷蔯트⮫輶❢ ㅇㅇ(118.235) 03:10 12 0
2717030 랜鹭揚臓덤曶爙⊤테⇙遂¶스⤃埥渭트撈蟘⨕ ㅇㅇ(220.87) 03:10 12 0
2717028 랜難窮♁덤翢⠧⅊테ⓗ罶␷스♄滠⟑트⨄應⣧ ㅇㅇ(182.230) 03:10 11 0
2717027 랜藘勾廾덤踔⧼♏테甦⋝∻스錰啔⎫트⊽兼枆 ㅇㅇ(221.155) 03:10 12 0
2717026 랜籕齡峔덤仆➻劔테禯▇⧣스稡蛞幨트₈⢿觬 ㅇㅇ(121.182) 03:10 11 0
2717025 랜祹鄰⨕덤Ⅴ躮痪테疉⇋∥스茎✲❢트莉⧂酅 ㅇㅇ(110.12) 03:10 15 0
2717024 랜☤␲∋덤⮗将⎱테⬜迮½스℡瘖₳트┎⣇恽 ㅇㅇ(39.122) 03:10 11 0
2717023 랜曋⟐獬덤鍍⏚匳테撙┈¦스娻跃頽트愉澶悏 ㅇㅇ(222.97) 03:10 12 0
2717022 랜⦨⠷⢎덤♩憬鷢테ℸ惶♜스輢⓵覱트>⩫⣙ ㅇㅇ(49.165) 03:10 12 0
2717021 랜邟酜⃾덤裁⣃⑨테齇ⓤ钔스≰檼螧트⌸≭⭷ ㅇㅇ(211.211) 03:10 16 0
2717020 랜蟤␷遁덤劤篻‸테澆穎⣁스◤鉏☹트吐€ⅈ ㅇㅇ(118.235) 03:10 12 0
2717019 랜苆⩴덤佦话⪳테蘟⒪驄스⟱⎑琮트櫤勀⪨ ㅇㅇ(14.51) 03:10 13 0
2717018 랜忢巅戴덤⇕⧊瓷테⬏⇓⡈스苸➢⪳트铱猝瑓 ㅇㅇ(118.32) 03:10 12 0
2717017 랜枭悗⪱덤浙鰉⛋테詹Ⓓ觰스↛È唏트Ò甸⯻ ㅇㅇ(58.233) 03:10 13 0
2717016 랜≀≲弋덤≴┳◣테ↁ厳╮스關炯⟦트⍡Ⓝ聘 ㅇㅇ(118.235) 03:10 11 0
2717015 랜ⒼÖ拒덤↠滙紿테阄⊒匿스帊疲␸트◑⒪〈 ㅇㅇ(182.218) 03:10 12 0
2717013 랜贉⭯瘗덤錕⨈▍테茺⁰贋스⪨⍄⦛트↤↘藡 ㅇㅇ(39.125) 03:10 12 0
2717014 랜⑘|⛔덤⤹螇梵테╧碌璋스壦芚磂트∉藃蔉 ㅇㅇ(175.204) 03:10 12 0
2717012 랜⡍⥫➔덤ↆ⍊灀테聸⤥➵스磖迻糩트鱘⃭⒍ ㅇㅇ(220.94) 03:10 11 0
2717011 랜␣舜⎷덤⊽諕⤋테⚭躜间스殉菃Ⅸ트攩搚婦 ㅇㅇ(115.22) 03:10 12 0
2717010 랜頲襄↸덤À倈晦테婃佧✻스痞⧁吹트扭⤧⍔ ㅇㅇ(112.187) 03:10 12 0
2717009 랜⩟侀柍덤哼Î⒥테♾❡瓖스₾脵窭트僇咥ℎ ㅇㅇ(119.205) 03:10 11 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2