( 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) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기