86 Assembly: Essential Part(1) quiz

2022. 7. 8. 15:36·보안/리버싱

86 Assembly: Essential Part(1) quiz

드림핵 리버싱파트 quiz문제 풀이

 

[Register]
rcx = 0
rdx = 0
rsi = 0x400000
=======================
[Memory]
0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10
0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d
0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c
0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00
=======================
[code]
1: mov dl, BYTE PTR[rsi+rcx]
2: xor dl, 0x30
3: mov BYTE PTR[rsi+rcx], dl
4: inc rcx
5: cmp rcx, 0x19
6: jg end
7: jmp 1

 

Q. end로 점프하면 프로그램이 종료된다고 가정하자. 프로그램이 종료됐을 때, 0x400000 부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면 ?

 


[code 해석]

code1

rsi + rcx: 0x400000 위치에 있는 데이터 dl로 mov

dl = 0x67 

 

code2

dl과 0x30을 XOR연산.

dl = 0x57

 

code3

dl을 rsi+rcx에 mov. 아까 그자리 그대로 차지

[Memory]
0x400000 | 0x57 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10
0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d
0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c
0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00

 

code4

rcx += 1

 

code5

cmp rcx, 0x19

rcx와 0x19 비교해서 전자가 더 크면  code6 (end로 점프), 아니면 code7(code1로 점프) 실행

작으니까 code1로 점프해서 다시 반복된다.


 

즉 

0x20만큼 반복한다.

= 36번 반복한다.

그럼 모든자리의 코드가 바뀔 것이다. 반복 루프를 돌 때마다 rcx는 하나씩 커지고, 그에 따라 바뀌는 byte가 다를 것.

즉 모든 데이터에 xor 0x30 해주면 되겠다.

 

파이썬 알못인 본인은 for문도 못돌리고 하나하나 했다고 한다.

저작자표시 (새창열림)

'보안 > 리버싱' 카테고리의 다른 글

reversing.kr - Easy ELF  (0) 2024.08.26
x64 assembly basic  (0) 2022.07.10
Dreamhack Quiz: x86 Assembly 2  (0) 2022.07.10
#2 동적분석과 정적분석  (0) 2022.07.01
#1 리버싱이란?  (0) 2022.07.01
'보안/리버싱' 카테고리의 다른 글
  • x64 assembly basic
  • Dreamhack Quiz: x86 Assembly 2
  • #2 동적분석과 정적분석
  • #1 리버싱이란?
병뚜
병뚜
열정!
  • 병뚜
    열려라 뚜껑
    병뚜
  • 전체
    오늘
    어제
    • all (372)
      • 일상X사랑X돈 (0)
        • 보안이슈 (114)
        • 뜨거운감자 (9)
        • 맛집 (2)
        • 혼잣말 (16)
      • 보안 (87)
        • 웹·모바일 (46)
        • 인프라 (19)
        • 리버싱 (8)
        • Security-Gym (10)
        • 리뷰 (4)
      • 프로그래밍 (66)
        • python (14)
        • java (12)
        • js (40)
      • System (47)
        • OS (14)
        • 침투 (33)
      • Play (20)
        • wargame (20)
      • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬
    뉴스요약
    windows internals
    리버싱초보
    파이썬공부
    혼공단
    혼공파
    자바스크립트 상속
    커널디버깅
    it이슈
    악성코드
    리버싱
    정보보안교육
    보안뉴스
    윈도우인터널스
    jwt
    드림핵리버싱
    혼자공부하는파이썬
    파이썬초보
    정보보안
    혼공학습단
    프로세스
    kisa
    랜섬웨어
    IT뉴스
    파이썬입문
    공급망공격
    보안이슈
    혼공
    정보보호
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
병뚜
86 Assembly: Essential Part(1) quiz
상단으로

티스토리툴바