ReverseEngineering 3

리버싱 입문 Day 8 - Ghidra 분석: virus.exe 파일 이어서 분석하기

지난 글에서는 데이터 흐름과 분기 구조의 중요성을 정리했다.특히 CALL 이후 TEST와 JZ/JNZ로 이어지는 구조가 인증 로직의 핵심이라는 점을 확인했다.하지만 실제 분석을 진행하면서 한 가지 의문이 계속 남아 있었다.왜 굳이 TEST EAX, EAX를 사용하는가?겉보기에는 의미 없는 연산처럼 보였기 때문이다.이번 글에서는 이 부분을 정리하면서, 분기 구조를 해석하는 방식을 한 단계 정리해본다.1. TEST를 연산이 아닌 상태 확인으로 보기 test eax, eax 처음에는 이 명령어를 단순한 AND 연산으로 이해했다.eax & eax 하지만 이 방식으로 접근하면 의미가 흐려진다.자기 자신과 AND를 수행하는 것은 결과적으로 값이 그대로 유지되기 때문이다.리버싱 관점에서 TEST의 역할은 다음과 같이..

카테고리 없음 2026.04.17

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

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

카테고리 없음 2026.04.10

리버싱 공부 1주차 정리 – CTF 직전 단계 (Reversing Study Week 1 – Before CTF)

약 일주일 동안 리버싱 기초 공부를 진행했다.처음에는 어셈블리어가 거의 이해되지 않는 수준이었지만, 반복해서 보다 보니 지금은 완전히 해석할 수는 없어도 흐름 정도는 어느 정도 보이기 시작했다.레지스터나 mov, cmp 같은 아주 기초적인 내용들은 따로 기록하지 않았다.지금 단계에서는 개념을 외우는 것보다 전체 흐름을 이해하는 것이 더 중요하다고 판단했기 때문이다. 그래서 오늘을 기준으로 CTF에 들어가기 직전 단계부터 블로그에 기록을 남기기로 했다.현재까지 이해한 흐름지금까지 공부하면서 느낀 리버싱 문제의 기본 구조는 거의 비슷했다.input → 처리(helper) → 조건 → key 비교이 구조를 기준으로 보면 코드가 훨씬 덜 복잡하게 느껴진다. 대부분의 경우 입력값을 한 글자씩 처리하면서, 특정 연..

카테고리 없음 2026.04.09