BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
자동화를 위한 키젠(Keygen) 작성 방법론
검증 로직을 파악했다면, 그다음은 같은 계산을 자동화하는 단계로 넘어간다. 무작위 대입은 비효율적이기 때문에, 보통은 검증 알고리즘을 분석해서 같은 규칙을 스크립트로 재현한다.
1. 키젠 작성 접근법
(1) 로직 복제(Cloning)
프로그램이 해시를 써서 "입력값의 해시"와 "정답 해시"를 비교하는 경우다. 해시는 역산이 어렵기 때문에, 같은 검증 로직을 스크립트로 옮겨서 후보 값을 반복 검증하는 식으로 접근하게 된다.
(2) 역산(Reversing)
더 흔한 경우는 XOR, ADD, Shift처럼 가역적인 연산을 거친 뒤 결과를 비교하는 방식이다. 이런 경우는 수식을 뒤집어서 원래 입력을 추정할 수 있다.
- 검증 식:
(Input + 5) ^ 0x10 == Target - 키젠 식:
Input = (Target ^ 0x10) - 5
2. 파이썬 구현
핵심은 어셈블리에서 본 연산을 파이썬으로 옮기는 것이다.
Assembly
mov al, [input]
add al, 0x05
xor al, 0x10
cmp al, [target]
Python Keygen
target_value = 0x45 # 목표값
# 역산 로직
# 1. XOR의 역연산은 XOR
temp = target_value ^ 0x10
# 2. ADD의 역연산은 SUB
answer = temp - 0x05
print(f"정답 키: {chr(answer)}")
연산이 많아지면 손으로 따라가는 건 금방 한계가 온다. 그래서 스크립트 자동화가 중요해진다. 단순 역산으로 안 풀릴 만큼 복잡한 경우에는 Z3 같은 SMT Solver를 써서 조건식을 만족하는 값을 찾기도 한다.

