함수
PRINT 함수
이처럼 PRINT 함수를 선언하고 실행시키면 해당 함수 내부로 들어가 msg 문자열을 출력시키게 된다.
ADD 함수
eax와 ebx의 더하기 연산을 해주는 함수를 실행시켰고
1과 3을 더해 4가 출력되었다.
MIN 함수
cmp를 통해 eax와 ebx의 값을 비교한 뒤 jl을 통해 eax가 더 작으면 LABEL_1으로 이동하게 된다.
jl: jump if A less than B
해당 코드에서는 eax가 1, ebx가 3으로 해당 함수들을 거쳐 1이 출력된다.
배열
ecx를 14번째 줄에서 cmp로 5와 비교를 하여 15번째 줄에서 jne를 사용해 반복 실행 혹은 종료가 된다.
즉, 5번의 반복문을 실행한다고 생각하면 된다.
[a]는 시작주소이고 ecx가 처음에 0, 1, 2, 3, 4의 값까지 증가하게 되기에
출력은 a[0] , a[1], a[2], a[3] a[4]인 1, 2, 3, 4, 5 가 된다.
실제로 a는 시작 값인 1을 출력하고 있다.
만약 23번째 줄에서 db인 1byte가 아닌 dw인 2byte로 변경을 하게 된다면 다음과 같다.
이처럼 a의 배열이 [1, 0, 2, 0, 3, 0, 4, 0, 5, 0]의 방식으로 구성이 되어 있다.
그리고 이를 ecx를 사용해 그대로 출력시키니 a[0], a[1], a[2], a[3], a[4]의 값인 1, 0, 2, 0, 3을 출력한다.
'Study > App' 카테고리의 다른 글
[App]Fridalab 1 (0) | 2022.10.20 |
---|---|
[App]레지스터 스택프레임 (0) | 2022.10.07 |
[App]Diva 12. Hardconding Issues - Part 2(하드코딩된 정보 + Frida native) (0) | 2022.09.30 |
[App]Uncrackable1 - 암호화 키 가져오기 (0) | 2022.09.29 |
[App]Uncrackable1 루팅 탐지 - 반환 값, exit() (0) | 2022.09.29 |