(이 글은 PC 환경에서 보는걸 추천함)
패키지 판에서 설치 정보 레지값을 확인하는 게임의 경우는 그냥 이미지 파일에서 빼내면 실행안됨
초기 구동 디스크 체크같은건 회피시킬려면 방식에 따라 다르겠지만 우선 생각나는건 파일 뜯어서 손대는건데
실행 크랙 만드는 양반들도 최초 구동 1회체크는 처음 한번만 하면 되는거라 크랙작업조차 안함
뭐 확인하는게 어느쪽인지 뜯어서 확인해볼정도라면 거기까지 하느니 배포하는입장에선 그냥 iso 파일로 배포하는게 편함
그래서 이번에 알아볼건 간단하게 구성할수 있는 쪽인 '매번 실행때마다 설치정보 레지를 확인' 하는 게임들인데
이 경우엔 간단하게 아무나 만들수 있는건 제목에 적어둔 거처럼 배치파일(*.bat)과 레지(*.reg) 파일임
뭐 깊이 들어갈 필요도 없으니 진자 간단하게만 알아보고 비교해봄
* 길어져서 접어둠
우선 간단한 reg 파일부터 설명해봄
reg 파일은 매우 쉽고 단순하게 뽑아내서 만들수 있고 제거조차도 쉬움
다만 이 방식은 파일 받아가는 사용자가 불편해짐
우선 간단한 reg 파일부터 설명해봄
reg 파일은 매우 쉽고 단순하게 뽑아내서 만들수 있고 제거조차도 쉬움
다만 이 방식은 파일 받아가는 사용자가 불편해짐
이건 나중에 설명할껀데 우선 reg 파일 뽑아내는것부터 해봄
테스트는 등록정보가 hklm에 위치한 미육의 향기를 설치해주고
실행에서 regedit를 실행 - ctrl+f 를 눌러서 찾기에 실행파일인 AI6WIN.exe 이나 설치경로나 뭐 찾을수 있는것들을 검색해봄
찾는게 나올때까지 다음 찾기를 눌러서 검색을 하다보면
원하는 설치 정보를 찾았음
여기서 이걸 레지 파일로 추출 하는 방법도 매우 간단함
좌측에 있는 폴더를 우클릭 해서 내보내기로 레지 폴더안에 있는걸 통짜로 내보내면 됨
편의를 위해 게임이 설치된 폴더 안으로 저장해봄
여기까지 해서 설치정보가 담긴 레지파일 생성이 끝남
배포하는 사람은 이거 포함 해서 압축하고 뿌리면 된다
그럼 이제 겜을 받는 사람이 귀찮아 지는데 겜은 받는 사람은 어떻게 해야하는지 한번 적어봄
게임을 받은 사람은 압축을 c:\test에 풀었다고 가정해봄
받은 사람은 폴더안의 reg파일을 그냥 실행 시켰고
?
테스트로 찍은 게임인 미육의 향기는 레지스트리는 확인하는데 설치 경로까지는 확인을 안하는것같네
실행 되면 다행이고 설치 경로까지 확인하는 게임이었다면 레지스트리를 등록해도
게임이 설치되어있지 않습니다.
실행하기 위해서는 게임을 설치해야합니다.
같은 메세지나 게임이 정상적으로 설치되지 않았다는등 비슷한 메세지를 내밷고 실행이 제대로 안될꺼임
이런 경우에는 겜 받은사람이 설치 경로를 수정해줘야함
레지파일을 우측클릭해서 편집을 누름
그러면 메모장으로 실행이 된다
보이는 경로 두곳을 수정해줘야함
이미지에 보이는것 처럼 reg 파일은 경로 표시할때 백슬래시 또는 역슬래시라 부르는 \ ←이것이 두번씩 들어간다
왜그러는지 궁금하면 따로 검색해보고
우선 현재 겜이 있는 위치로 저걸 수정해줘야함
그냥 겜 실행파일이 있는곳 주소를 복사하고 붙여 넣으면 됨
붙여넣고 \ 역슬래시를 두개씩 들어가게 해주고
저장 하고 메모장은 닫아버리고 변경된 reg 파일을 실행하면 됨
이렇게 변경하는게 번거로운거에 비해선 레지값 삭제는 매우 간단함
reg 파을 우측클릭해서 편집을 누른뒤에
HKEY앞에 - 하나만 입력하고 저장하고 레지파일 실행하면 저 레지 경로 채로 날라감
elf 마저 날릴꺼면 편집할때 biniku 단어까지만 지우면 elf 포함 하위 값들을 싹다 날릴꺼임
reg 파일은 자동으로 관리자 권한을 항상 요구하기 때문에 등록 지점에 따라 뭐 큰 문제될게 없고
겜 받은 사람만 귀찮아짐
다음은 배치 파일(*.bat) 파일쪽을 해보겠음
배치파일로 만들경우 배포하는 사람이 번거롭고 받는 사람은 딸깍이라 편함
이 경우에도 주의사항이 있는데 추후 설명하도록 하고
우선은 알아두면 좋은것부터 짚고 넘어감
그나마 간단하게 하기 위해서 변수를 넣어서 만들껀데
시작하기 전에 알아둘건 명령 프롬프트에서 현재 디렉토리를 지정하는 기본 변수는 %cd%임
명령 프롬프트를 실행시켜서 %cd%를 입력하고 엔터를 치면 자동으로 현재 위치인 c:\test 로 입력되면서
실행할수 있는 프로그램이나 배치파일이 아니라고 뜨는걸 볼수 있음
이 변수를 써도 되지만 일반적으로 관리자 권한으로 실행했을때는 위치가 달라짐
비교를 위해 대충 만들어본 테스트용 배치파일임
이걸 그냥 실행시키면
현재 배치 파일이 있는 경로를 긁어옴
문제는 관리자 권한이 필요해서 사용자가 일반적인 방법인 우측클릭해서 관리자 권한으로 실행시켰을때 인데
위와 같이 실행하면
위치가 배치파일이 있는 위치가 아니라 cmd의 기본 위치로 변경되서 그 위치를 긁어옴
그래서 %CD%를 안쓰고 다른변수를 쓰는데 그게 %~dp0 임
%~d0 (드라이브) + %~p0 (경로) = %~dp0 (드라이브 및 경로)
똑같이 테스트용 배치파일을 하나 만들어봄
똑같이 관리자 권한으로 실행시키면
위와같이 제대로 표시가 된다
물론 다른 드라이브로 옮겨도 잘됨
그래서 %CD% 를 써도 되지만 기본은 %~dp0 을 쓰면 됨
물론 %CD%도 관리자 권한이 필요없을땐 써도 되고 추가로 작업을 치면 사용 가능함
딱히 문제는 없는데 알고 가는게 나을듯한 부분이라 해서 짚어둔 것
이제 본론인데 위와 같이 변수를 사용해서 레지파일을 배치파일로 등록시키게 만들꺼임
레지 파일에서 했던것처럼 게임을 설치하고 reg 파일을 내보내기로 뽑아내는게 시작
그리고 검색한 레지 파일은 닫아버리면 안되는데 배치파일로 구성할꺼면 종류도 알아야하기 때문
이 스샷처럼 레지스트리 파일에도 종류가 몇가지가 있다
이 중에서 맞는 값을 배치파일에 입력해줘야함
우측클릭해서 편집으로 들어가고 메모장을 하나 더 켜서 만들어야함
이렇게 배치파일을 만들어서 게임 실행파일 있는곳에 저장하면 됨
내용 중 몇개만 집어서 대충 설명해보자면
set "Dir=%~dp0"
set → 변수 지정
"Dir=%~dp0" → 변수 Dir 은 %~dp0(파일이 있는 현재 드라이브명과 경로)
set "REG_KEY=HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\elf\biniku"
set → 변수 지정
"REG_KEY=HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\elf\biniku"
→ 변수 REG_KEY 는 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\elf\biniku(레지스트리 경로)
reg add "%REG_KEY%" /v "InstExec" /t REG_SZ /d "%Dir%AI6WIN.EXE" /f
reg add → 레지추가
키 위치 변수값 → %REG_KEY%
/v "InstExec" → 선택한 키 아래 InstExec 라는 이름을 추가
/t REG_SZ → 레지키 데이터 형식은 REG_SZ로 지정
/d "%Dir%AI6WIN.EXE" → 추가할 레지스트리에 현재 드라이브 명과 경로뒤에 AI6WIN.EXE 까지 포함해서 할당
/f → 확인 절차 없이 강제로 덮어 씌움
reg add "%REG_KEY%" /v "Version" /t REG_DWORD /d 65536 /f
이거는 위쪽 설명이랑 크게 차이는 없는데
문자열 값과 다르게 DWORD는 진수 변환해서 입력해줘야 하는데 위에 스샷보면 DWORD 값 편집 열어논거 보일꺼임
16진수로 10000이지 때문에 10진수로 괄호 안의 65536을 입력해줘야함
자 대충 내용 설명은 했고 이렇게 만들어진 파일을 실행해서 테스트를 해봐야겠지???
두가재
ㅋㅋㅋㅋㅋㅋ
HKCU 쪽과는 다르게 HKLM경로에 레지스트리를 입력할려면 관리자 권한이 필요함
그래서 배치파일을 우측 클릭해서 관리자 권한으로 실행 시켜야함
배치파일 속성에서 관리자 권한 요구하게 체크 해둘순 있는데
이게 다른 컴 다른 사용 상황에서도 제대로 체크가 되어있다는 보장하기가 애매함
매번 받는 사람한테 우측클릭해서 관리자 권한으로 실행하세요 같은거 설명하기도 귀찮을꺼고
그냥 더블클릭 딸깍 하는 사람들이 더 많겠지???
그래서 bat to admin 스크립트를 위에 넣어줌
@echo off
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
이 내용을 방금 만든 배치 파일 위에 복붙 하면 끝남
그러면 배치파일 내용이 이렇게 구성이 되고
저장한 배치 파일을 실행시키면
관리자 권한 요구 창이 뜨면서 확인 눌러주면 이렇게 작업이 완료됨
지우는 배치 파일을 만들꺼면 reg add 대신 reg delete 로 변경해주면 되는데
이건 그냥 배치 파일 처음에 reg 파일 추출해논걸
편집으로 앞에 - 하나 입력 딸깍해주고 지우는 reg 파일임 해두는게 편할껄
아까 추출한거에서 이렇게 앞에 - 하나만 달아주면 되는데 뽑아논건 다 활용해야지 ㅇㅇ
자 이렇게 대충 알아본건데 배치파일 ㅈ같은 환경 변수 웨써야 함??
그냥 경로 쓰면 안됨?
이런 의문이 들 수도 있음
맞음
그냥 경로도 다 써줘도 상관없음
한두개 밖에 안된다면 ㅇㅇ
예시로 가져온 내가 겜 올릴때 만들었던 하루우루 배치파일인데
게임꺼 레지스트리 정보만 저정도임
복붙 해도 되는데 길이가 길어져서 보기 힘들어지는것도 있어서 한번 셋 해두는게 좋음
HKCU라 관리자 권한이 필요 없는 경우라 %CD% 로 한번 써봤고
하루우루 한글 패치가 한글 패치 설치 여부를 확인하는데 이 레지는 HKLM이라 배치파일을 따로 만들어두고
이어서 그걸 실행하게 해논 구성임
당연히 이것도 이렇게 배치파일 두개로 찢어둘 필요는 없고 관리자 권한 부여하고 하나로 합쳐도 되는데
%CD%로 어디까지 구성되나 내가 이것저것 해본다고 가지고 놀다가 그대로 올려버린거라 저럼
마지막으로 배치파일로 할때 주의 할게 있는데
폴더이름이 저따구로 길고 여러개를 거쳐서 들어가면
레지스트리 값도 요약되서 ㅈ대는것만 주의하면 됨
빠진거 없겠지?
나중에 생각나면 추가함
