XOR 3

리버싱 입문 Day 15 - strlen + i 연산 + XOR 구조에서 역산 실수 정리

어제까지 XOR과 index 연산 구조를 계속 반복하면서 익숙해졌다고 생각했는데,오늘 문제에서는 역산 과정에서 실수가 발생했다.단순한 구조였지만,한 번 틀리고 다시 전체 흐름을 확인하면서 이해가 더 명확해진 문제였다.1. 문제 구조전체적인 흐름은 기존과 동일했다.입력을 받는다check 함수로 전달조건 만족 시 Correct기드라에서 확인한 핵심 부분은 다음과 같다. CALL strlenCMP RAX, 0x6 입력 길이는 6으로 고정되어 있다.2. key 값메모리에서 key 값은 다음과 같이 확인된다. MOV dword ptr [RBP + local_13], 0x4f4d4745MOV word ptr [RBP + local_f], 0x5b51 리틀엔디안 기준으로 정리하면:0x45, 0x47, 0x4d, 0x..

카테고리 없음 2026.04.27

리버싱 입문 Day 14 - XOR + index + offset 구조 정리

어제 문제에서 XOR과 index 연산이 섞인 구조를 한 번 정리했고,오늘은 비슷하지만 조금 다른 형태의 문제를 하나 더 풀어봤다. 겉보기에는 거의 동일한 구조인데,막상 분석해보니 헷갈리는 포인트가 하나 더 추가된 형태였다.1. 문제 구조이번 문제 역시 기본 흐름은 크게 다르지 않았다.입력을 받는다check 함수로 전달조건 만족 시 Correct이제는 구조 자체는 거의 자동으로 보이는 수준이다.기드라로 확인한 부분은 다음과 같다.CALL strlenCMP RAX, 0x8 이번에는 입력 길이가 8로 고정되어 있었다.2. key 값문자열 형태로 key가 바로 보였다."lbh#qf~m" 이제는 key 찾는 것도 크게 어렵지 않은 단계까지 온 것 같다.3. 핵심 연산이번 문제의 핵심은 아래 부분이었다.ADD E..

카테고리 없음 2026.04.25

리버싱 입문 Day1 - helper와 역산으로 crackme 풀기

약 일주일 정도 리버싱 기초를 공부하면서 이제 막 CTF 문제 풀이에 들어가기 직전 단계까지 왔다. 너무 기초적인 내용들은 따로 정리하기 애매해서, 실제 문제를 풀기 시작하는 시점부터 블로그에 기록을 남기기로 했다. 아직 어셈블리어가 완벽하게 읽히는 수준은 아니지만, 반복해서 보다 보니 코드의 전체 흐름은 어느 정도 눈에 들어오기 시작했다. 오늘 공부하면서 느낀 가장 큰 특징은, 리버싱 문제들이 겉보기에는 복잡해 보이지만 실제 구조는 상당히 단순하다는 점이었다. 대부분의 문제는 입력값을 받아서 특정 연산을 거친 뒤, 조건을 통과하면 최종적으로 key와 비교하는 방식으로 구성되어 있었다. 이 흐름을 정리하면 “input → helper → 조건 → key 비교”라는 하나의 틀로 묶을 수 있고, 실제로 풀어..

카테고리 없음 2026.04.10