Factorio의 RNG를 역공학하다: 결정론적 게임의 무작위를 예측하는 방법
Reversing Factorio's RNG
Factorio는 taus88 PRNG를 사용하는데, 이는 3개의 선형 피드백 시프트 레지스터(LFSR)를 XOR한 구조로 암호학적으로 취약하다. 게임 바이너리에 포함된 디버그 심볼을 Ghidra로 분석해 알고리즘을 확인하고, LFSR의 선형성 덕분에 내부 상태를 복원해 미래의 '무작위' 이벤트를 예측할 수 있음을 보인다. 품질 모듈의 결과까지 예측 가능하다는 점이 흥미롭다.
만약 우리가 정확한 알고리즘과 내부 상태를 안다면? 그렇다면 우리는 상태에 대해 같은 알고리즘을 실행하여 게임 내부에서도 볼 수 있는 동일한 출력을 얻을 수 있다.