코드 분석을 쉽게하기 위해 2-3줄 단위로 끊어주었다.
스택은 LIFO 구조이다. 메모리를 적재할 때 주로 사용되는 방법이다.
어셈블러는 16진수만 좋아한다 16진수로 입력을 받기 때문에 10진수로 변환하면 위와 같다. 또한 하드웨어에 변수라는 공간을 만들기 위해 원하는 변수 개수 x 변수 크기 만큼을 만들어 준다.(ex. int(4byte) 4개 == 4x4)
사용한 공간을 ebp에서 빼주었다.
하드웨어는 계산을 못하는 멍청이들 모임이다 못하기 떄문에 cpu에서 계산을 할 것이다. cpu의 구조는 제 블로그에서 확인하실 수 있습니다. *^^* 간략하게 설명하면 cpu에는 연산장치가 있기 때문에 이동해 준다.
(기계어 -> 어셈블러 (<< c언어 <<<<<<<<<<<<<< 파이썬) -> 자연어 이기 때문에 cpu는 어셈블러를 0101로 뚱땅뚱땅 바꿔서 연산을 잘 수행할 것이다. 당신의 클록속도는?!?!)
위에서 b = 10 이라고 해주었기에 10 x 0x17 == 10 x 23 이기에 b는 현재 230의 값을 가지고 있다.
다시 메모장으로 만들어 주는 거 같다. 뇌피셜이지만 cpu에 내놓은 아이 다시 메모리로 데려오는 이 느낌.
단순 연산이다.
* =은 같다라는 의미가 아니고 값을 넣어준다는 의미이다. a = 10 => a에 10이라는 숫자를 입력(담음)
잘 이해가 안 가는 줄이었다. a / 라는게 함축적으로 a /= a 라는 의미인가 싶었다. 식을 완성하기 위해선 a가 / 를 가지고 c와 합성한 것으로 해석했다.
내가 잘 알고 있을 거라고 착각하는 함수 중 하나이다 return 0; 저 의미는 함수 종료를 의미한다.
* return 1, -1: 해당 값 반환
return 0: 정상종료
puts의 내용은 없었으나 a, b, c 값 확인을 위해 임의로 출력해 주었다.
'포렌식' 카테고리의 다른 글
[Whois] 정보보안교육 - 리버싱 Root-Me PE x86 - 0 protection (0) | 2021.11.08 |
---|---|
[Whois] 정보보안교육 - 리버싱 어셈블러 핸드레이(2) (0) | 2021.10.13 |
[디지털포렌식] NONamed left side b (0) | 2021.07.15 |
[디지털포렌식] NONamed 길에서 주워온 만두 (0) | 2021.07.15 |
[디지털포렌식] NONamed 입사테스트2 (0) | 2021.07.14 |