리버싱(2)
-
easy-crackme1.exe 분석 보고서
1. easy-crackme1.exe 실행 단서1 : ‘input:’ 이라는 문자열을 찾음 가설1 : input이라는 문자열이므로 무언가를 입력하는 부분 같음, 디버깅할 때 input이라는 문자열로 main함수나 중요한 부분을 찾을 수 있겠다는 생각을 함 2. main 함수 결과1 : 가설대로 main 함수를 찾을 수 있었음 함수 설명 : %d(정수)라는 자료형을 두 개 입력받고 정수를 가지고 easy-crackme1 (1).140001180이라는 함수를 불러와 어떠한 조건으로 검사하고 correct!인지 wrong!인지를 확인한다. 가설1 : 설명에 있던 함수의 리턴값이 1이여야 test 연산을 하면 1이 되어 ZF값(ZF -> 0)이 세팅되지 않기 때문에 je문에 만족하지 않게 되어 correct! ..
2021.05.06 -
지역변수 출력 (리버싱 유형 - 1)
#include int main() { int a = 5; printf("%d\n", a); return 0; } 지역변수인 a를 출력하는 코드를 x64dbg로 동적 분석 Ctrl + G 를 누른 뒤 main을 입력하면 main 함수로 이동 sub rsp, 28 : rsp가 가르키는 주소를 0x28 만큼 빼서 스택공간 확보 mov edx, 5 : edx에 5를 대입 (int a = 5 와 대칭) lea rcx, qword ptr ds:[7FF7D84B2240] : rcx에 주소 대입(7FF7D84B2240 : %d) call : printf 함수 불러오기 xor eax, eax : 같은 값을 eax하면 무조건 0이 나옴 (만약 1 반환을 원하면 mov eax, 1로 나옴) add rsp, 28 : 스택공..
2021.03.17