C언어로 레지스터 값을 추가하는 방법에 대해 알아 보겠다
그러기 위해선 RegSetValueEx함수와 RegOpenKeyEx함수에 대해 알아 볼 필요가 있다
하지만 여긴 초보자들을 위한 곳이니 대강 알려주겠다
먼저 두 함수의 반환값은 long 자료형이다
RegOpenKeyEx(HKEK hKey, LPCWSTR lpSubKey, 0 ,REGSAM samDesired, HKEY phkResult)
함수의 원형이다
HKEKh Key: 오픈할 레지스터 키의 핸들이다
좀 더 정확한 이해를 위해 사진으로 보여 주겠다

이 파일들이 레지스터 키의 핸들이라 보면 된다
LPCWSTR lpSubKey: 좀 더 구체적인 레지스터 경로를 쓰는 인자다 레지스터 키의 핸들을 제외한 경로를 TEXT함수에 감싸서 넣으면 된다
0: 아무것도 안쓰이는 인자다 0, 0L만 쓰면 된다
REGSAM samDesired: 레지스터 키를 열고 나서 권한을 얼마나 줄지 결정하는 인자다
HKEY phkResult: 오픈한 키의 핸들이다 나중에 RegCloseKey(hKey) 함수로 종료 시켜야 할 인자다
그리고 이것은 함수 사용의 예다
RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0L, KEY_WRITE, &hKey);
이 레지스터는 시작 프로그램 레지스터를 오픈하는 함수다
다음은 RegSetValueEx함수다 이 함수의 반환형은 long이며
레지스터 키를 추가하는 기능을 하는 함수이다
함수 원형:
RegSetValueEx(HKEY key, LPCSTR lpValueName , 0, DWORD type, const BYTE *lpData, DWORD cbData);
HKEY key: 레지스터 키의 포인터다 이 인자로 레지스터 키의 경로를 알아낸다
LPCSTR lpValueName: 레지스터 데이터의 이름을 입력 받는 인자다
0: 아무 의미 없다 0이라 적자
DWORD type: 데이터 종류를 입력하는 인자다
const BYTE *lpData: 레지스터 데이터를 입력 받는 인자다
DWORD cbData: 레지스터 데이터 길이를 입력 받는다
사용 예제:
https://noobhack.tistory.com/32
[NOOBHACK] 레지스터 시작 프로그램 등록 C언어
진지하게 바이러스와 악성코드를 만들어 보기 위해 실행 하면 바이러스가 레지스터에 시작 프로그램에 등록 되도록 코드를 짰다 HKEY hKey; // 핸들 키 LPCWSTR lpPosition = L"프로그램 파일 경로"; long er
noobhack.tistory.com
'C언어 강의' 카테고리의 다른 글
| [NOOBHACK] 특정 비트를 0 혹은 1로 만드는 코드 (1) | 2023.09.10 |
|---|