2020. 1. 12. 06:53ㆍ정보보안
@ 어셈블리(JG)
1. JG(JA 비슷함)
- 형식 : JG [Code Address]
- 내용 : Operand 1이 Operand 2보다 큰 경우 해당 주소로 점프한다.
- 예제 : JG 401140
- 해석 : Operand 1이 Operand 2보다 큰 경우 401140으로 점프한다.
- 조건 : Operand 1 > Operand 2
1) VS 2008을 이용하여 'jg.exe' 파일을 제작한다.
- 파일 -> 새로 만들기 -> 프로젝트 -> 빈 프로젝트 -> 위치(04_테스트) & 이름(jg) -> 확인
- '소스 파일' 우클릭 -> 추가 -> 새 항목 -> 'C++ 파일(.cpp)' 선택 -> 이름(jg) -> 추가
#include
#include
#pragma comment(lib, "user32")
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nCmd)
{
int num1 = 6;
int num2 = 2;
if(num1<=num2) {
MessageBox(NULL, "Operand1 <= Operand2 -> Next Code", "JG 명령어(점프X)", MB_OK);
} else {
MessageBox(NULL, "Operand1 > Operand2 -> Jump", "JG 명령어(점프O)", MB_OK);
}
return 0;
}
- 파일 -> 모두 저장 -> 닫기
2) 'cl' 명령어를 이용한 최적화 컴파일 실시
C:\리버싱\04_테스트\jg\jg>cl jg.cpp /link /debug /opt:icf,ref
Microsoft (R) 32비트 C/C++ 최적화 컴파일러 버전 15.00.30729.01(80x86)
Copyright (c) Microsoft Corporation. All rights reserved.
jg.cpp
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:jg.exe
/debug
/opt:icf,ref
jg.obj
C:\리버싱\04_테스트\jg\jg>dir
2. 올리디버거를 이용한 'jg.exe' 분석
- 메모리 주소, 레지스터 저장 값, 스택 내용, 메모리 덤프 내용, 비교 및 분기 내용 확인