본문 바로가기

C언어 강의

[NOOBHACK] C언어로 레지스터 값 추가 방법(RegOpenKeyEx, RegSetValueEx)

C언어로 레지스터 값을 추가하는 방법에 대해 알아 보겠다

그러기 위해선 RegSetValueEx함수와 RegOpenKeyEx함수에 대해 알아 볼 필요가 있다

하지만 여긴 초보자들을 위한 곳이니 대강 알려주겠다

 

먼저 두 함수의 반환값은 long 자료형이다

RegOpenKeyEx(HKEK hKeyLPCWSTR 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 typeconst 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