KOROMOON

착한 사마리아인이 되고 싶습니다.

5/19/2020

윈도우 RunDll32 명령어


( 1 )  Rundll 과 Rundll32 비교

Rundll은16-비트 DLL을 로드하고 실행하며, 반면 Rundll32는32-비트 DLL을 로드하고 실행함. 잘못된 DLL을 Rundll 나 Rundll32에 사용하는 경우, 오류 메시지 없이 실행에 실패함.



( 2 ) Rundll 커맨드 라인

RUNDLL.EXE <DLL 명>,<엔트리 포인트> <옵션 아규먼트>
ex. RUNDLL.EXE SETUPX.DLL,InstallHinfSection 132 C:\WINDOWS\INF\SHELL.INF



( 3 ) Rundll 명령어 라인에서 주의해야 할 3가지 문제

1. Rundll 이나 Rundll32은 주어진 DLL 파일명을 LoadLibrary() 함수가 사용하는 표준위치에서 찾음. 정확을 기하기 위해서는 DLL의 풀-패스를 기술하고, 유효한 파일명이 되기 위해서는 긴 파일명 대신 짧은 파일 명을 기술함. 즉 "C:\Program Files" 폴더는 반드시 짧은 폴더 명으로 변환되어야 함.

2. <DLL 명>에는 스페이스, 콤마, 따옴표 등이 포함될 수 없음. 이것은 Rundll 커맨드 분석기의 한계임.

3. 위 커맨드 라인에서, <DLL 명>과 <엔트리 포인트> 사이의 컴마(,)는 매우 중요함. 만약 컴마가 없다면, Rundll이나 Rundll32는 어떤 오류 메시지 없이 실패함. 또한 <DLL 명>, 컴마와 <엔트리 포인트> 함수 사이에는 스페이스도 없어야만 함.



( 4 ) Rundll 동작 방법

1. 커맨드 라인을 분석함.
2. LoadLibrary()로 명시된 DLL을 로드함.
3. GetProcAddress()로 <엔트리 포인트> 함수의 어드레스를 얻음.
4. <옵션 아규먼트>를 <엔트리 포인트> 함수로 패스하면서 콜함.
5. <엔트리 포인트> 함수 리턴시 Rundll.exe는 DLL을 언로드하고 종료함.



( 5 ) RunDll32.exe 사용 예

[프로그램 및 기능] 열기
RunDll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,0

[제어판] 열기
RunDll32.exe shell32.dll,Control_RunDLL

[인터넷 임시 파일] 삭제
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

[인터넷 쿠키] 삭제
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

[인터넷 히스토리] 삭제
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

[인터넷 폼 데이터] 삭제
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

[인터넷 패스워드] 삭제
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

[인터넷 모두] 삭제
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

[인터넷 애드온 파일 및 모두] 삭제
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351

[날짜 및 시간] 열기
RunDll32.exe shell32.dll,Control_RunDLL timedate.cpl

[장치 관리자] 열기
RunDll32.exe devmgr.dll DeviceManager_Execute

[폴더 옵션 - 일반 탭] 열기
RunDll32.exe shell32.dll,Options_RunDLL 0

[폴더 옵션 - 보기 탭] 열기
RunDll32.exe shell32.dll,Options_RunDLL 7

[폴더 옵션 - 검색 탭] 열기
RunDll32.exe shell32.dll,Options_RunDLL 2

[암호 기억 마법사] 열기
RunDll32.exe keymgr.dll,PRShowSaveWizardExW

[최대 절전 모드] 전환
RunDll32.exe powrprof.dll,SetSuspendState

[키보드 속성] 열기
RunDll32.exe shell32.dll,Control_RunDLL main.cpl @1

[화면 보호] 전환
RunDll32.exe user32.dll,LockWorkStation

[마우스 속성 - 단추 구성] 변경 <--- 다시 재부팅해야만 원복됨 ㅠㅠ
Rundll32 User32.dll,SwapMouseButton

[마우스 속성] 열기
Rundll32 Shell32.dll,Control_RunDLL main.cpl @0,0

[네트워크 드라이브 연결] 열기
Rundll32 Shell32.dll,SHHelpShortcuts_RunDLL Connect

[네트워크 연결] 열기
RunDll32.exe shell32.dll,Control_RunDLL ncpa.cpl

[즐겨찾기 관리] 열기
Rundll32.exe shdocvw.dll,DoOrganizeFavDlg

Open With Dialog Box
Rundll32 Shell32.dll,OpenAs_RunDLL Any_File-name.ext

[프린터 사용자 인터페이스] 열기
Rundll32 Printui.dll,PrintUIEntry /?

[프린터] 열기
Rundll32 Shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder

[전원 옵션] 열기
RunDll32.exe Shell32.dll,Control_RunDLL powercfg.cpl

[국가 또는 지역] 열기
Rundll32 Shell32.dll,Control_RunDLL Intl.cpl,,0

[저장된 사용자 이름 및 암호] 열기
RunDll32.exe keymgr.dll,KRShowKeyMgr

[하드웨어 안전하게 제거] 열기
Rundll32 Shell32.dll,Control_RunDLL HotPlug.dll

[소리] 열기
Rundll32 Shell32.dll,Control_RunDLL Mmsys.cpl,,0

[시스템 속성 - 고급 탭] 열기
Rundll32 Shell32.dll,Control_RunDLL Sysdm.cpl,,3

[시스템 속성 - 시스템 보호 탭] 열기
RunDll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,4

[시스템 속성 - 원격 탭] 열기
RunDll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,5

[작업 표시줄] 열기
RunDll32.exe shell32.dll,Options_RunDLL 1

[사용자 계정] 열기
RunDll32.exe shell32.dll,Control_RunDLL nusrmgr.cpl

[하드웨어 안전하게 제거] 열기
RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll

[보안 및 유지 관리] 열기
RunDll32.exe shell32.dll,Control_RunDLL wscui.cpl

[윈도우 정보] 열기
RunDll32.exe SHELL32.DLL,ShellAboutW

[Fonts] 열기
Rundll32 Shell32.dll,SHHelpShortcuts_RunDLL FontsFolder

[Windows Defender 방화벽] 열기
RunDll32.exe shell32.dll,Control_RunDLL firewall.cpl



참고 사이트 : 



============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기