아주 쉬운거에요..

스트링을 보면 성공 메시지가 보이지만 이건 성공메시지가 중요한 것이 아닙니다.

어떤식으로 돌아가고 있는지 풀이를 간단하게 저에게 알려주시면 합당한 상품(?)을 드릴께요.

아 오랜만에 플밍하니 머리 아프네요 ㅋㅋㅋㅋ

자주자주 해야겠어요..




컴파일 환경: XP SP3, VS 6.0

'[+] Information > [-] RCE' 카테고리의 다른 글

Lena's Tutorial 1 상세분석  (0) 2011.10.06
Lena's Tutorial 분석 글을 쓸 예정  (0) 2011.10.06
아주 쉬운 크랙미  (9) 2009.11.24
출처모르는 크랙미 풀이..  (4) 2009.11.15
POC Window 리버싱  (2) 2009.10.24
  1. Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.11.24 23:28 신고

    문제가 뭐 이따구니 뭐가 이렇게 쉽냐는둥 하시면 안되요~

    이건 초보자를 위한 크랙미에요 중급자 크랙미는 다음에 만들어 올릴께요 ㅋ

    분석능력을 기를수있게 만든 크랙미에요~

  2. Favicon of https://sone.tistory.com BlogIcon Sone 2009.11.24 23:50 신고

    끝에 system("pause";); 정도는 넣어주시는 센스~!

  3. 알 수 없는 사용자 2009.11.26 07:10

    그럼 끝에 getch(); 정도는 넣어주시는 센스..

  4. gasinams 2010.02.19 19:53

    관리자의 승인을 기다리고 있는 댓글입니다

  5. gasinams 2010.02.24 19:48

    관리자의 승인을 기다리고 있는 댓글입니다

  6. 익명 2010.09.04 11:47

    비밀댓글입니다

codediver라는 분이 만드신 크랙미 같은데 아는분이 주셔서 한번 풀어봤어요 ㅎ

간단하니 가벼운 마음으로 봅시당 ㅎ



프로그램은 이렇게 생겼습니다.

Ok 버튼을 눌러도 아무런 반응도 하지 않는 아주 배은망덕(?) 한 프로그램인데요(다이버님 죄송 ㅠ)

무엇으로 만들어졌나 스캔해 봤더니..



헐!! 보이시나요?? 전 분석하기도 어려워 죽을꺼 같은 어셈으로 코딩까지 하셨네요 ㅠㅠ

이제 올리로 프로그램을 하나하나 분석해 봅시당 ㅎ

코드는 그렇게 길지 않습니다.

쭈욱 내리다 보면...

아래와 같은 부분이 보입니당.



사진 맨위를 보시면 CMP문으로 AX의 값과 셋팅되어있는 10(10진수로 16)을 비교하네요.

AX는 트레이싱 해보시면 아시겠지만 사용자가 입력한 값의 길이 입니다.

길이가 16이여야 엉뚱한 곳으로 점프하지 않고 아래에 있는 코드들이 실행되겠네요.

코드가 조금 긴 관계로 바로 분석하겠습니다.(중요한 부분만)


CMP AX,10                                                                                    //글자 길이가 16글자인지 비교.
JNZ SHORT dummycod.00401229                                                     // 16글자가 아니라면 다른곳으로 점프
MOV ECX,EAX                                                                               // EAX는 문자열 길이가 저장되어 있다. 그 값을 ECX에 복사함.
MOV ESI,dummycod.00403078                                                         // 사용자 입력 값을 ESI에 복사함.
MOV EDI,dummycod.00403035                ;  ASCII "$2667;/1722\"4;29" // xor할 문자열을 EDI에 복사함.
JMP SHORT dummycod.004011E4
DB 2F                                    ;  CHAR '/'
DB 33                                    ;  CHAR '3'
MOV BL,BYTE PTR DS:[ESI]                                                         // 사용자가 입력한 값들중 맨 처음 앞글자를 BL에 복사함.
JMP SHORT dummycod.004011EA
DB 37                                    ;  CHAR '7'
DB 22                                    ;  CHAR '"'
MOV AL,BL                                                                                  // BL의 값을 AL에 복사함.
JMP SHORT dummycod.004011F0
DB 2D                                    ;  CHAR '-'
DB 39                                    ;  CHAR '9'
MUL BL                                                                                       // BL과 AL값을 곱하여 AL에 저장.
ADD BL,BL                                                                                   // BL값에 BL을 더함.
OR BL,BL                                                                                     // BL에 BL을 OR 연산함(값이 변동하지 않음)
JNZ SHORT dummycod.004011FA
JMP SHORT dummycod.00401229
JMP SHORT dummycod.004011FE
DB 31                                    ;  CHAR '1'
INC ESP
DIV BL
JMP SHORT dummycod.00401204
DB 87
POP ESI                                  ;  kernel32.7C7E7077
MOV BL,BYTE PTR DS:[EDI]                                                          // EDI 한바이트를 BL에 복사.
JMP SHORT dummycod.0040120A
DB 2F                                    ;  CHAR '/'
DB 33                                    ;  CHAR '3'
CMP AL,BL                                                                                   // 계산된 AL과 BL에 값을 비교함.
JMP SHORT dummycod.00401210
DB 31                                    ;  CHAR '1'
INC EBP
JNZ SHORT dummycod.00401229                                                    // AL과 BL이 같지 않으면 점프(그러므로 분석할때는 NOP해줘야 한다.)
INC ESI                                                                                        // ESI를 1증가 시킨다.(다음글자로 넘어감.)
INC EDI                                  ;  ntdll.7C940228                               // EDI를 1증가 시킨다.(다음글자로 넘어감.)
LOOPD SHORT dummycod.004011E0                                              // 루프 ^^ (16번을 돈다.)
PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
PUSH dummycod.0040300F                   ; |Title = "Http://codeDiver.gg.ro"
PUSH dummycod.00403046                   ; |Text = "성공하셨네요! 멋진 리버서가 되시길"
PUSH 0                                   ; |hOwner = NULL
CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA      // 메시지 박스 호출.

 
휴 저도 완벽히 분석은 못해서.. ㅠㅠ

CMP AL,BL 이부분이 성립되어야 메시지 박스로 넘어갑니다.

AL에는 연산된 결과값이 있고 BL에는 비교 대상인 $2667;/1722"4;29 문자열에 $가 들어가게 됩니다.(첫번째 루프에서)

역으로 비교 문자열을 입력하면 답이 나오지 않을까요?(xor)



$2667;/1722"4;29을 넣고 트레이싱을 하면 BL에 H글자가 들어가는 것을 확인할 수 있는데요.

아직 복사 전이라 계산된 값이 BL에 들어가 있는 것 입니다.

복사가 되면 BL에는 $글자가 들어가겠죠 ㅎ

이런식으로 한글자 한글자씩 분석하시면 실제로 넣어야 할 값이 만들어집니다.

그 값을 프로그램에 입력하면 분석했던 로직으로 인해 비교될 문자열들과 똑같아 지는 것이죠.

그리고는 메시지 박스가 호출되게 되는 것 입니다.




아 분석을 한줄한줄 하다보니 귀찮아서 몇군데 건너띄었는데 양해 부탁드려요..

마지막에는 대충썼네요 ㅋㅋㅋ;;

근데 이건 크랙미라 하기도 뭐하고 키젠미라고 하기도 뭐한....

아래는 분석한 프로그램이에요 ㅎ

  1. Secret 2010.02.12 10:44

    CMP AL,BL부분이 성립되야 하니까 00401210 부분의 JNZ를 JE로 바꾸면 16자리 아무숫자나 입력해도 성공!

  2. gasinams 2010.03.02 13:31

    어렵다 이건 ㅠㅠ

악.. 낚시에 걸려서 조금 헤맨... ㅠㅠ



이거 처음에 켜니까 컴터가 종료되길래 VM에서 작업했다는.. ㅋㅋㅋ

너무 무섭더라구요 ㅠㅠ

자동으로 종료되면 다들 그러시지 않나요? ㅋ

리눅스 바이너리 분석이랑 PHP도 있던데..

리눅스 서버가 없어서 뭐 ㅋㅋㅋㅋ

이참에 리눅스를 하나 깔던지 해야지 ㅋㅋㅋ

'[+] Information > [-] RCE' 카테고리의 다른 글

아주 쉬운 크랙미  (9) 2009.11.24
출처모르는 크랙미 풀이..  (4) 2009.11.15
POC Window 리버싱  (2) 2009.10.24
ShowString - 프로그램 스트링 보여주는 프로그램  (14) 2009.08.27
재밌는 리버싱 문제~  (120) 2009.07.03
  1. Favicon of https://johnghb.tistory.com BlogIcon John_G 2009.10.24 16:25 신고

    이번 문제 글올리신분이 누군가 했더니 마제님이셨군요 하힛 ^^
    분석하다 수십번 자동종료 덕분에 오기로 풀어 버렸다는...
    윈도우 문제 다 풀고 나니 리눅스 바이너리(바이러스)와 PHP를 풀 시간이 없었더라는.. (사실 풀수 없었던거였을지도.)
    자동종료 공감이 가서 글올리고 갑니다 하핫;;

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.10.24 17:22 신고

      하핫 역시 리버싱은 vm에서죠?? ㅋ

      로컬에서 하면 위험을 너무 안고 해야하는.. ㅠㅠ

제가 리버싱하기전에 스트링을 보기 위해 사용하는 툴 이에요.

꽤 좋다는 ㅋ


'[+] Information > [-] RCE' 카테고리의 다른 글

출처모르는 크랙미 풀이..  (4) 2009.11.15
POC Window 리버싱  (2) 2009.10.24
ShowString - 프로그램 스트링 보여주는 프로그램  (14) 2009.08.27
재밌는 리버싱 문제~  (120) 2009.07.03
cffo-4 크랙미 풀이.  (10) 2009.04.14
  1. Favicon of http://town.hyo123.com BlogIcon 효123 2009.08.27 16:47

    리버싱하시나요?
    크래킹? 후ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.08.27 16:51 신고

      ㅎㄷㄷ 리버싱 하는게 나쁜건가요??? ㅎㄷㄷ ㅋㅋㅋㅋ

    • Favicon of http://town.hyo123.com BlogIcon 효123 2009.08.30 00:05

      나쁜게 아니고,
      실력이 후ㄷㄷㄷㄷㄷㄷㄷ 이시라구요.
      아무나 못하죠.

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.08.30 15:46 신고

      허접이라능 ㅎㄷㄷ

  2. 알 수 없는 사용자 2009.08.27 19:39

    죄송한데요 리버싱이 먼가요???

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.08.28 16:10 신고

      아 프로그램을 역으로 분석하는 기술 입니다 ^^

      바이러스 분석하는데 많이 쓰여요 ㅎ

  3. 알 수 없는 사용자 2009.08.27 20:43

    안녕하세요? ㅎㅎ 저도 어려워 무슨 내용인지 잘 모르겠는데요. :)

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.08.28 16:11 신고

      음~ 바이러스 분석하는데 많이 쓰이는 기술이라 생각하시면 될꺼에요 ^^ ㅎㅎ

  4. Favicon of http://blog.naver.com/jjysrh BlogIcon Sun2Day 2009.08.27 23:41

    오홍.. 전 걍 string 쓰는디 ㅇ_ㅇ;;

    아님 올리에 있는 기능을.. (+__)ㅋ

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.08.28 16:11 신고

      ㅎㅎ 전 그냥 깔끔하게 이걸로 한번 보고 ㅋㅋ

  5. Favicon of http://blueh4g.org BlogIcon BlueH4G 2009.08.27 23:51

    이거 리눅스의 string 이랑 똑같은 어플?

    많은거 배워간다 ㅎ

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.08.28 16:11 신고

      네 ㅋㅋ

      윈도판 string 이라고 보시면 될듯 ㅋ

  6. ut0pian 2009.12.05 17:14

    리버싱을 크래킹으로 보시는 분이 있을 줄이야.......

    전 크래킹은 안하는 사람이니까 리버싱은 안해야겠군요..

오랜만에 리버싱 관련글 포스팅이네요 ㅎㅎ

제가 만들어본 또하나의 리버싱 문제!! ㅋㅋ


이번 문제의 난이도는 중하!

분석하셔서 패스워드 키를 얻는 문제입니당.

비밀댓글로 키값을 적어주시면 칭찬해드리겠습니다 ^^

학생이라 상품증정등으로 쓸 돈이 없네요.. ㅠㅠ

그대신 네이트온 친구추가해서 같이 놀아드릴순 있어요 ^^

ㅎㅎㅎ 화이팅입니다~

(지금와서 보니 리버싱문제라고 하기에 참 부끄럽네요 ^^;;)


* 문제 아이디어는 크리스톱님 바이너리 문제에서 얻었습니다.

System ver 0.1.exe


'[+] Information > [-] RCE' 카테고리의 다른 글

POC Window 리버싱  (2) 2009.10.24
ShowString - 프로그램 스트링 보여주는 프로그램  (14) 2009.08.27
재밌는 리버싱 문제~  (120) 2009.07.03
cffo-4 크랙미 풀이.  (10) 2009.04.14
simples 시즌2 리버싱 문제 level1 풀이.  (4) 2009.04.14
  1. 이전 댓글 더보기
  2. 익명 2011.05.05 16:18

    비밀댓글입니다

  3. 익명 2011.09.04 22:40

    비밀댓글입니다

  4. 익명 2011.11.03 22:25

    비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2011.11.03 22:32 신고

      스트링을 보시면 되는데~~ ㅎㅎ

      어려울것 같아서 제가 일부러 스트링을 쉽게 만들어놓은거에요 ㅋ

    • 2011.11.04 00:09

      비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2011.11.04 09:35 신고

      네 ㅎㅎ 그것에 답이 ㅋ

  5. 익명 2011.11.04 23:35

    비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2011.11.05 08:51 신고

      땡....

      그리고 무슨 아이디요?! ㅎㅎ

    • 2011.11.05 13:23

      비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2011.11.06 19:47 신고

      하핫 아쉽지만 틀리셨어요 ㅠㅠ..

      친추는 아무때나 환영입니다 ^^

  6. 익명 2011.12.05 01:19

    비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2011.12.05 09:17 신고

      정답 ㅋ!!

      흐미.... 제가 2년동안 문명생활을 안한지라.. ㅋㅋ

      곧 새로운 문제가 나올거에요 ^^

  7. 익명 2012.03.04 16:13

    비밀댓글입니다

  8. 나그네 2012.03.06 01:10

    지나가던 길에 한번 풀어볼려고 손댓다가.. 피보고 있군요..
    ㅠㅠ
    MaJ3stY!!
    RxUTSEdUO
    0MtdiNDpT
    gzOU1ULKc

    저기서...
    RxUTSEdUO0MtdiNDpTgzOU1ULKc
    이 값이 인코딩되어서.. 푸는것 같은데..ㅠㅠ 도저히 접근을 못하겠네요.
    0x00~0xFF까지 각각 더해보기도 하고 xor 시켜보기도하고 base64,65 등등 각종 디코딩도 다 해봤는데 안나오궁..ㅠ
    혹시~~!!

    RxUTSEdUO0MtdiNDpTgzOU1ULKc

    이게 잘못된건가요?ㅎㅎ

  9. 익명 2012.04.05 17:46

    비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2012.04.05 21:19 신고

      죄송하지만 네이트온을 개인적인 사정으로 하지 않네요...

      질문하신 것은 답변과 크게 관련있는 거라 메일도 보내드리지 못함을 이해해주시기 바랍니다 ^^

  10. 익명 2012.04.09 20:32

    비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2012.04.09 21:29 신고

      음... 넌센스라고 하기에도 조금 뭐하답니다 ㅎㅎ

      쉽게 만들려고 제가 노력을 꽤 했다죠 ㅋㅋ!!

  11. 익명 2012.04.12 19:47

    비밀댓글입니다

  12. 익명 2012.07.12 14:46

    비밀댓글입니다

  13. 익명 2013.03.27 19:08

    비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2013.03.27 22:01 신고

      그 부분에 대해서는 말씀을 드릴 수 없습니다 ^^
      어셈코드가 있으니 분석하시면 어떠한 동작을 하는지 파악이 될테고, 그 동작이 과연 현재 질문자님께서 생각하신 그 행동이 맞는지 확인이 될테니 분석을 계속 해보시기 바랍니다.

  14. pinghintadminvmos 2014.05.13 17:28

    풀엇어염 admin vmos hint ping 127.0.0.1

  15. 익명 2014.12.24 17:31

    비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2014.12.26 09:54 신고

      조금만 더 분석해보시기 바랍니다.

      답이 아니네요..

  16. 익명 2015.04.18 15:23

    비밀댓글입니다

  17. 익명 2015.04.18 15:23

    비밀댓글입니다

  18. 익명 2015.04.18 16:09

    비밀댓글입니다

  19. 익명 2017.04.24 10:34

    비밀댓글입니다

  20. 익명 2018.02.09 18:01

    비밀댓글입니다

  21. unitowjk 2019.01.15 20:47

    마지막 ping 까지는 했는데 그후는 정말 모르겠습니다 ㅠㅠ 답좀 알려주실수있을까요? 그리고 .. 괜찮으시면 해석좀.. 아무것도 마지막은 못풀겠어요 ㅠㅠ

+ Recent posts