📁 AppData 폴더란?

AppData는 각 사용자 계정별로 애플리케이션 설정과 데이터를 저장하는 숨김 폴더입니다.
경로는 다음과 같아요:

makefile
복사편집
C:\Users\사용자이름\AppData\

그 안에는 세 가지 하위 폴더가 있습니다:

  • Local
  • LocalLow
  • Roaming

이번 글에선 이 중 Local과 Roaming에 집중합니다.


🔍 Local vs Roaming 한눈에 비교

항목AppData\LocalAppData\Roaming
📦 저장 데이터 캐시, 로그, 임시 데이터 등 설정, 사용자 데이터, 환경 정보
🔁 동기화 여부 ❌ 동기화되지 않음 ✅ 도메인 로그인 시 다른 PC로 동기화 가능
📁 용도 무거운 데이터, 시스템 의존적인 것 사용자 설정, 계정 정보
🧹 삭제 영향 삭제해도 앱 재설치로 복구 가능 삭제 시 설정 초기화 위험
예시 Chrome 캐시, 앱 로그 메신저 계정 설정, VSCode 테마 등

💡 왜 이름이 Roaming일까?

기업 환경에서는 Windows 도메인 계정을 사용해
한 사람이 여러 PC에 로그인할 수 있습니다.

이때 AppData\Roaming 폴더는 사용자 설정을 동기화하여
다른 PC에서도 같은 환경을 유지할 수 있게 해주는 기능이 있죠.
(물론 일반 가정용 윈도우에선 이 기능은 크게 적용되지 않아요)


💻 실생활 예시

프로그램저장 위치설명
Google Chrome AppData\Local\Google\Chrome 브라우저 캐시, 방문기록 등
Discord AppData\Roaming\discord 로그인 상태, 테마 설정 등
VSCode AppData\Roaming\Code 확장 프로그램, 키맵, 테마
OBS Studio AppData\Roaming\obs-studio 씬 레이아웃, 방송 설정 등

🧼 어떤 걸 백업하면 좋을까?

  • Roaming: 앱 설정과 계정 정보가 저장되므로, 백업할 가치 높음
  • Local: 임시파일이나 캐시가 많아, 백업은 불필요한 경우가 많음

🧭 정리

✅ 기억하면 좋은 포인트
Local은 시스템마다 다른 임시성 데이터 저장
Roaming은 사용자 설정을 다른 PC에서도 공유 가능
캐시, 로그는 Local / 계정 설정은 Roaming에 저장됨

 

"디버깅이 아니라 유적 발굴입니다." → (누가 이 코드를 만들었는지 알 수 없다...)

 

"이건 기능이 아니라 기술 채무입니다."→ (빚이 쌓이고 있다…)

 

"주석이 없어서 직관적이네. 해석할 직관이 필요함."→ (신의 계시가 필요하다)

 

"이 코드는 역사적 가치가 있다. 고치면 고증 오류 남."→ (그 시절 감성 그대로 유지)

 

"코드 스멜이 아니라 코드 악취다. 방진 마스크 필요함."→ (소스 열자마자 눈물남)

 

"수정은 했는데, 동작은 한다고 안 했습니다." → (메커니즘은 살아있음)

 

"이건 리팩토링이 아니라 재건축입니다."→ (기초부터 다시 파야 함)

 

"기능 추가했더니 버그도 따라왔습니다. 1+1 행사!"

 

"테스트 케이스가 실패한 게 아니라... 현실을 반영한 거다."→ (현실 부정 단계)

 

"이건 동작하는 게 아니라 운이 좋은 거야."→ (재실행하면 모른다)

 

"한 번에 성공했다면 로그를 켜야 한다."→ (그럴 리가 없다)

 

"디버깅하는데, 내가 디버깅 당함."→ (혼이 빠져나가는 느낌)

 

"주석은 많아. 근데 다 틀렸어."→ (오히려 혼란만 준다)

 

"이건 버그가 아니라 종속성이다."→ (의존하고 있다…)

 

"함수를 부르면 온갖 부수 효과가 일어난다. 일종의 의식이다."→ (이벤트 스톰)

 

"코드가 예술 작품이야. 의미를 찾지 마."→ (추상화 수준이 미술관급)

 

"이 정도면 소스코드가 아니라 모험이다."→ (들어가면 못 나온다)

 

"수정하는 순간 의도치 않은 기능이 깨어난다."

"일단 이번 주 안에 프로토타입 만들어보자."→ 그게 완제품이 될 예정

 

"결정은 내가, 책임은 너희가.""이게 바로 리더십이다."

 

"내가 틀릴 리가 없잖아. 니가 잘못 이해한 거지.”

 

"나는 큰 그림을 그릴 테니 너희가 색칠해.""알고 보니 도화지는 찢어져 있다."

 

"일단 해보고 안 되면 말해."→"안 될 걸 알면서 시키는 마법."

 

"나는 몰라도 너는 알아야지.""다 아는 사람은 팀장님 아니고 나인가?"

 

"야, 그냥 하면 돼.""어떻게요?" → "그걸 왜 나한테 물어봐?"

 

"이건 다 너희를 위한 경험이야.""그래서 언제 팀장님 경험은 쌓나요?"

고급 이해불가 아키텍처 (실제: 아무도 이해할 수 없는 설계)

 

혁신적 버그 생성 메커니즘 (실제: 새로운 오류를 계속 만들어내는 방식)

 

다차원 혼란 설계 패턴 (실제: 의도적으로 혼란스러운 코드 구성)

 

확장 가능한 문제 증폭 시스템 (실제: 작은 문제를 큰 문제로 만듦)

 

현대적 기술 퇴행 프레임워크 (실제: 낡은 기술을 새로운 것처럼 포장)

 

선제적 혼란 통합 방법론 (실제: 체계적으로 혼란을 만들어내는 방법)

 

강화된 비직관적 인터페이스 (실제: 사용하기 어려운 UI/API)

 

진화된 문서화 회피 전략 (실제: 문서를 작성하지 않는 방식)

 

첨단 개발자 좌절 시스템 (실제: 개발자들을 화나게 만드는 시스템)

 

지능형 순환 복잡도 극대화 (실제: 코드를 불필요하게 복잡하게 만듦)

 

통합된 성능 저하 파이프라인 (실제: 각 단계마다 점점 느려지는 시스템)

 

차세대 오버엔지니어링 패러다임 (실제: 필요 이상으로 복잡하게 설계)

 

비즈니스 가치 희석 솔루션 (실제: 실제 가치를 줄이는 기능)

 

선진적 코드 비만화 기술 (실제: 코드를 불필요하게 부풀리는 방식)

 

최첨단 디버깅 불가능 아키텍처 (실제: 디버깅하기 불가능한 설계)

최적화된 비효율성 (실제: 의도적으로 느린 코드)

 

향상된 개발 장애물 (실제: 코딩을 어렵게 만드는 관행)

 

전략적 기능 축소 아키텍처 (실제: 필요한 기능을 제거함)

 

지속적 퇴보 통합 (실제: 점점 더 나빠지는 시스템)

 

확장된 단순성 회피 (실제: 불필요하게 복잡한 설계)

 

정교한 생산성 저하 패턴 (실제: 작업을 더 어렵게 만드는 방식)

 

선진적 후퇴 메커니즘 (실제: 이전 버전보다 나쁜 새 버전)

 

혁신적 역기능 엔지니어링 (실제: 의도적으로 제대로 작동하지 않게 만듦)

 

고급 성능 감소 프레임워크 (실제: 시스템을 느리게 만드는 도구)

 

최대화된 유지보수 복잡도 (실제: 유지보수하기 어려운 코드)

 

진보적 후진성 (실제: 이전보다 더 나쁜 상태)

 

최첨단 비효율성 패러다임 (실제: 매우 비효율적인 방식)

 

성숙한 복잡성 발전 모델 (실제: 불필요하게 복잡해진 시스템)

 

전략적 역량 저하 솔루션 (실제: 의도적으로 성능을 저하시키는 접근법)

 

초우수 자원 낭비 최적화 (실제: 리소스를 무의미하게 많이 사용함)

향상된 복잡도, 저하된 생산성

 

스펙다운 엔지니어링

 

고도로 퇴보된 시스템

 

코드 미궁화 : 들어가면 출구는 없다 MazeRefactoring

 

블랙홀 아키텍처 : 들어가면 못 나오는 블랙홀 시스템

 

탈출 불가 루프 설계

 

최신화가 아닌 노후화

 

악성 패치의 교과서 고도화가 아니라 고통화

 

고급 이해불가 아키텍처는 신입 개발자들이 코드를 이해하지 못하도록 보장하며, 첨단 개발자 좌절 시스템을 통해 팀 이탈률을 지속적으로 유지합니다.

둘 다 팝업이나 UI 창의 형태인데, 사용자 인터랙션을 어떻게 제어하느냐가 포인트!


🔵 모달(Modal)

✔️ 정의

사용자의 집중을 강제로 요구하는 창
➡️ 사용자가 모달을 닫기 전까지 다른 작업을 못함

✔️ 특징

  • 화면에 레이어처럼 띄워지는 창
  • 배경은 비활성화되고 클릭/조작 불가
  • 사용자의 행동을 차단하고, 특정 작업만 가능
  • 경고, 확인, 승인 요청 등 필수적일 때 사용

✔️ 예시

  • "정말 삭제하시겠습니까?" 확인창
  • 로그인, 비밀번호 입력 팝업
  • 경고창(Alert Dialog)

✔️ UX 포인트

  • 사용자가 중요한 선택을 강제로 하게 만들 수 있음
  • 너무 남발하면 사용자 짜증 유발 가능
  • 중요한 액션(결제, 탈퇴)에서 사용자의 실수 방지에 사용됨

🟢 모달리스(Modalless)

✔️ 정의

사용자가 자유롭게 다른 작업을 동시에 할 수 있는 창
➡️ 메인화면을 차단하지 않고, 보조적으로 동작하는 UI

✔️ 특징

  • 메인화면을 계속 조작 가능
  • 창을 띄운 상태에서 동시 작업 가능
  • 주로 도움말, 추가정보 패널, 사이드바, 레이어창 등에 사용

✔️ 예시

  • 포토샵의 레이어 창, 히스토리 창
  • 워드/구글독스의 사이드 툴바
  • 웹사이트의 채팅 상담 창

✔️ UX 포인트

  • 사용자에게 더 많은 자유 제공
  • 작업 중단 없이 멀티태스킹 가능
  • UX 흐름을 방해하지 않고 기능 제공 가능

✅ 한눈에 보기! 모달 vs 모달리스

구분모달(Modal)모달리스(Modalless)
사용자 동작 막힘 → 집중 강제 자유로움 → 동시 작업 허용
배경 화면 클릭/조작 불가 클릭/조작 가능
용도 경고, 승인, 중요 선택 보조창, 추가 정보, 툴바
UX 관점 강제적 인터랙션, 실수 방지 멀티태스킹, 유연한 사용자 경험 제공
예시 삭제 확인창, 로그인 팝업 포토샵 레이어창, 댓글 사이드바
 

 

   열1(Column1) 열2(Column2) 열3(Column3)
   ┌───────────┬───────────┬───────────┐
행1 │    A1     │    B1     │    C1     │ ← Row1
   ├───────────┼───────────┼───────────┤
행2 │    A2     │    B2     │    C2     │ ← Row2
   ├───────────┼───────────┼───────────┤
행3 │    A3     │    B3     │    C3     │ ← Row3
   └───────────┴───────────┴───────────┘
     ↑           ↑           ↑
     Column1     Column2     Column3

 

주요 용어 설명

  1. 행 (Row)
    • 가로로 나열된 데이터 집합
    • '레코드(Record)'라고도 불림
    • 위 그림에서 A1, B1, C1은 하나의 행(Row1)을 구성
  2. 열 (Column)
    • 세로로 나열된 데이터 집합
    • '필드(Field)' 또는 '속성(Attribute)'이라고도 불림
    • 위 그림에서 A1, A2, A3은 하나의 열(Column1)을 구성
  3. 셀 (Cell)
    • 행과 열이 교차하는 지점의 개별 데이터 항목
    • 예: A1, B2, C3 등은 각각 하나의 셀

추가 설명

  • 로우(Row): '행'의 영어 표현으로, 동일한 의미
  • 컬럼(Column): '열'의 영어 표현으로, 동일한 의미
  • : 일반적으로 '셀(Cell)'을 지칭하는 한국어 표현

'IT > 잡팁' 카테고리의 다른 글

나이 계산, 만 나이 계산  (0) 2024.06.19
비만도, BMI 계산기  (0) 2024.06.19
D-Day 계산기  (0) 2024.06.19
복리 계산기  (0) 2024.06.18
마우스 우클릭 방지 해제(초간단, 크롬 엣지 공통 )  (0) 2023.06.07

DBVM: 게임 해킹의 강력한 도구

오늘은 게임 해킹 커뮤니티에서 주목받고 있는 DBVM에 대해 알아보겠습니다. DBVM은 Cheat Engine의 개발자 DarkByte가 만든 Virtual Machine Monitor(VMM)으로, Intel의 VT-x 하드웨어 가상화 기술을 활용하여 기존 운영체제를 Guest로 올리고, 모든 인터럽트를 제어할 수 있게 해줍니다.

DBVM의 주요 특징

DBVM은 여러 가지 강력한 기능을 제공합니다:

  1. 강력한 디버깅 기능: DBVM은 Anti-Debugging 기술을 우회하고, 흔적을 남기지 않고 프로세스를 디버깅할 수 있습니다. 이는 게임 해킹에서 중요한 요소로, 보안 프로그램의 탐지를 피할 수 있습니다.(Themida, VMProtect 안티디버깅 우회 가능)
  2. 커널 메모리 접근: 일반적인 디버거와 달리, DBVM은 커널 공간의 메모리에도 제한적으로 브레이크포인트를 설정할 수 있습니다. 이는 시스템의 내부 동작을 분석하는 데 유용합니다.
  3. 시스템 타임스탬프 조작: DBVM을 이용하면 rdtsc 명령어의 반환값을 조작할 수 있어, 게임의 시간 흐름을 조작할 수 있습니다. 이는 게임 속도 조절에 유용하게 사용될 수 있습니다.

DBVM 사용하기

DBVM을 사용하려면 Intel VT-x가 지원되는 시스템이 필요합니다.

Cheat Engine을 통해 DBVM을 활성화할 수 있으며, "Your system supports DBVM" 메시지를 확인할 수 있습니다.

DBVM의 기능을 활용하는 예시는 다음과 같습니다:

 
1.Edit -> Settings 클릭
 
2.DBVM 들어간거 둘중 하나 선택

 

주의사항

DBVM은 강력한 도구이지만, 악용될 가능성도 있습니다. 보안을 위해 DBVM 사용 시 기본 비밀번호를 변경하는 것이 좋습니다. 또한, DBVM은 게임 해킹 커뮤니티에서 강력한 도구로 자리잡고 있지만, 윤리적인 사용이 중요합니다. 개인의 학습과 연구 목적으로만 사용하시기 바랍니다.

DBVM은 게임 해킹의 세계에서 중요한 역할을 하고 있으며, 다양한 기능을 통해 사용자에게 강력한 도구를 제공합니다. 이 글을 통해 DBVM의 기본적인 기능과 사용법을 이해하고, 윤리적으로 사용하는 방법에 대해 생각해 보시기 바랍니다. 감사합니다!


Perplexity로부터의 답변: pplx.ai/share

 

📝 Lumina 서버란?

IDA Pro에서 제공하는 Lumina 서버

"다른 사람이 이미 분석한 함수 이름과 정보를 내 프로젝트에 자동으로 반영해주는 시스템"입니다.

분석하고 있는 바이너리가 낯설고 함수명이 죄다 sub_XXXX일 때,
Lumina 서버는 그 함수가 어떤 함수인지 자동으로 찾아주고,
함수명/타입 정보를 IDA에 바로 적용해줍니다.

Hex-Rays Decompiler를 사용하는 경우, Lumina 서버와 연계하면 훨씬 효율적인 분석이 가능합니다.


🚀 Lumina 서버를 왜 써야 할까?

  • 분석 속도 증가
    → 이미 검증된 함수 정보를 자동으로 매칭해줍니다.
  • 팀 협업 효율
    → 사설 서버를 통해 팀원 간 시그니처 데이터를 공유할 수 있습니다.
  • 중복 분석 제거
    → 여러 번 분석한 함수 정보를 다시 쓸 수 있습니다.

🌐 기본 제공 Lumina 서버 사용법 (Hex-Rays 공식 서버)

1️⃣ 기본 설정 확인

  1. Options → General 메뉴로 이동합니다.
  2. 하단에 Lumina server 설정 부분이 보입니다.
  3. Use Lumina server 체크 박스를 활성화합니다.
    기본 주소는 https://lumina.hex-rays.com 입니다.

2️⃣ 함수 시그니처 다운로드

  • 메뉴 → Edit → Other → Lumina → Download metadata
    → 분석 중인 함수에 자동으로 이름과 타입 정보가 적용됩니다.

3️⃣ 자동 다운로드 설정 (권장)

Options → General 메뉴에서
Auto-download function metadata 옵션을 활성화하면

IDA가 함수 분석 시마다 자동으로 Lumina 서버에서 정보를 가져옵니다.


🔒 사설 Lumina 서버 구축하기 (Private Lumina Server)

외부로 데이터가 나가는 게 걱정된다면?
사내에서 분석 데이터를 안전하게 공유하고 싶다면?
→ 사설 Lumina 서버를 구축하세요!


1️⃣ 서버 실행파일 받기

  • Hex-Rays에서 제공하는 lumina_srv 실행 파일 필요
    (Hex-Rays 고객 포털에서 다운로드 가능)

2️⃣ 서버 실행하기

아래 명령어로 서버를 실행합니다.

bash
복사편집
lumina_srv -d ./lumina_db -p 5000

옵션 설명:

옵션설명
-d 데이터베이스 디렉터리 경로
-p 포트 번호 (기본 5000)

예시:

bash
복사편집
lumina_srv -d /opt/lumina_db -p 5000

3️⃣ IDA에서 서버 연결

  1. Options → General 메뉴로 이동
  2. Lumina server 주소를 변경
    cpp
    복사편집
    http://<서버IP>:5000
  3. Download metadata로 테스트
    → 정상 동작 시 서버에 등록된 함수 시그니처가 내려옵니다.

🛡️ 사설 서버 운영시 주의사항

  • ✅ 기본 HTTP이므로, HTTPS 프록시(Nginx 등)를 사용해 암호화 권장
  • ✅ 외부 접근을 제한하여 내부망 전용 서버로 운용 권장
  • ✅ 서버 데이터는 SQLite나 Key/Value 저장소 형태
  • ✅ 서버 포트 개방 시 인증 시스템이 없기 때문에 방화벽 필수!

📂 Lumina 서버 데이터 관리

  • 서버 실행 시 -d 옵션으로 지정한 폴더에 모든 데이터가 저장됩니다.
  • 팀원들이 업로드한 함수 정보도 이곳에 누적됩니다.
  • 필요 시 백업/이전이 가능하며, 협업 환경에서는 주기적 백업을 권장합니다.

✅ Lumina 서버 전체 명령어 정리

bash
복사편집
lumina_srv -d <데이터베이스 경로> -p <포트번호>

추가 옵션

옵션설명
-h 도움말 출력
-v 자세한 로그 출력

🎉 Lumina 서버, 이런 분들께 추천합니다!

대상이유
분석팀 리더 팀원들 간 분석 데이터 통합/공유
보안 관제팀 외부에 정보 노출 없이 안전한 분석 환경
개인 리버서 함수 식별 자동화로 빠른 리버싱

 

 

+ Recent posts