-SeDebugPrivilege-
http://support.microsoft.com/kb/131065/ko

-3389 레지스트리-
http://surewin.kr/xp/10379
http://www.mydigitallife.info/turn-on-or-enable-remote-desktop-on-windows-vista/

 - 포트번호 수정 -
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber


Windows 7
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber


-유저권한에 대한 글 (takeown, icacls 명령어)-

http://blog.naver.com/PostView.nhn?blogId=forc1&logNo=50092734072
http://snoopybox.co.kr/929
http://snoopybox.co.kr/1510

-비주얼스튜디오 메니페스트관련-

http://blog.naver.com/liehacker?Redirect=Log&logNo=130071461580
http://sol9501.blog.me/70107857763

-사용자 추가 명령어- #Administrators 그룹구성원으로 추가해야함
http://www.niemand.org/bbs/view.php?id=tip&page=4&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=89&PHPSESSID=dfb0021fba40cd41f63f7626f04da32d

http://shinb.tistory.com/130

-관리자 권한 활성화하기-
http://shinb.tistory.com/125

-사용자 ID 숨기기-
http://blog.daum.net/_blog/BlogTypeView.do?blogid=0Oi91&articleno=77#ajax_history_home

-  설치된 프로그램 -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\하위키\DisplayName

신고
Posted by kyh1026
1. 심볼없는 드라이버 DriverEntry에 bp설정

bp 드라이버이름+0xef(드라이버 entry의 offset) // offset은 PEviewer등 툴로 확인가능
sxe ld 드라이버이름 // sxe는 활성화 sxd는 비활성화 -> 로딩되는 시점에 break 걸림

2. IopLoadDriver 를 찾아가다 보면 call dword ptr [edi+2c] 코드에 bp를 설정함 -> bp nt!IopLoadDriver+0x66a
edi에는 driver_object의 주소가 있으며, 0x2c의 offset에는 DriverInit맴버가 있음. 이 DriverInit맴버가 DriverEntry의 주소를 가지고 있어 이 주소위치에 bp를 설정하여 드라이버의 처음부분부터 분석이 가능함

dt _driver_object [edi] 로 값을 확인할 수 있음.
신고
Posted by kyh1026

win7 Debuggee 설정

1. bcdedit 명령으로 identifier 확인 WIndows Boot Loader 부분에 {current}로 되어있음
2. bcdedit /copy {current} /d "Windows 7 with Debug" 로 부팅 시 선택항목을 생성 "" <- 요건 아무이름이나 상관없음
3. bcdedit 명령으로 Windows Boot Loader 부분의 identifier가 바뀌었는지 확인하고({current} -> {16진수 형태}) 이를 이용하여 디버깅 모드를 ON 시켜줘야함
3. bcdedit /debug {16진수형태} ON
4. 재부팅하여 디버깅 모드로 부팅할 수 있음 


신고
Posted by kyh1026

자동실행 레지스트리 경로

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services\

신고
Posted by kyh1026


1. 방화벽 활성화
cmd -> netsh -> firewall -> set opmode enable


2. 방화벽 비활성화
cmd -> netsh -> firewall -> set opmode disable


3. 방화벽 활성상태 에서 예외목록 허용
cmd -> netsh -> firewall -> set opmode enable disable


4. 방화벽 활성상태 에서 예외목록 허용안함
cmd -> netsh -> firewall -> set opmode enable enable


5. 예외사항 추가하고 설정 적용
cmd -> netsh -> firewall -> add allowedprogram "%PROGRAMFILES%\Internet Explorer\iexplorer.exe" "Internet Explorer" ENABLE


6. 예외사항 추가하고 설정 해제
cmd -> netsh -> firewall -> add allowedprogram "%PROGRAMFILES%\Internet Explorer\iexplorer.exe" "Internet Explorer" DISABLE


7. 예외사항 항목에서 삭제
cmd -> netsh -> firewall -> del allowedprogram "%PROGRAMFILES%\Internet Explorer\iexplorer.exe"

신고
Posted by kyh1026

드라이버 공부를 처음하면 개발환경 구성에 대한 고민을 많이 하게 됩니다.

비주얼 스튜디오 2005 이상의 IDE와 WDK를 연동하는 방법에 대해 정리 하였습니다.

먼저 해야할 일은 컴파일을 위해 WDK를 환경변수에 등록해야 합니다.

[내컴퓨터] -> [속성] -> [고급탭] -> [환경변수]


환경변수를 등록했으면

http://www.osronline.com/article.cfm?name=ddkbuild_v72.zip&id=43

다음의 주소에서 ddkbuild를 다운받습니다.


다운받은 ddkbuild를 압축해제 하여 bat파일을 C:\Program Files\Microsoft Visual Studio 8\VC\bin 경로에 복사합니다.


비주얼 스튜디오를 실행시켜 프로젝트를 생성하는데 메이크파일 프로젝트 를 선택합니다.


생성 시 주의사항은 프로젝트 경로에 빈칸이 존재하면 안됩니다. 빈칸이 존재하면 드라이버 컴파일이 제대로 되지 않습니다.

그 다음은 빌드를 위해 디버그 구성설정과 릴리스 구성 설정을 합니다.

디버그 구성설정


릴리즈 구성설정


그리고 자신의 WDK가 설치되어 있는 경로를 비주얼스튜디오의 [도구] -> [옵션] 으로 가서 다음의 경로를 추가해 줍니다.





이렇게 설정을 마친 후 개발 시 SOURCE파일과 MAKEFILE은 프로젝트 생성 폴더에 넣어서 개발을 하면 됩니다.

비주얼 스튜디오 2005 이상에서는 이렇게 설정을 하면 비주얼 스튜디오를 통해 개발할 수 있습니다.

intellisense기능이 사용되는 모습


신고
Posted by kyh1026

XP: Documents and Settings
Vista: Users

XP: Documents and Settings\$USER$\My Documents
Vista: Users\$USER$\Documents

XP: Documents and Settings\$USER$\My Documents\My Music
Vista: Users\$USER$\Music

XP: Documents and Settings\$USER$\My Documents\My Pictures
Vista: Users\$USER$\Pictures

XP: Documents and Settings\$USER$\My Documents\My Videos
Vista: \Users\$USER$\Videos

XP: Documents and Settings\$USER$\Application Data
Vista: Users\$USER$\AppData\Roaming

XP: Documents and Settings\$USER$\Cookies
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Cookies

XP: Documents and Settings\$USER$\Local Settings
Vista: Users\$USER$\AppData\Local

XP: Documents and Settings\$USER$\NetHood
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Network Shortcuts

XP: Documents and Settings\$USER$\PrintHood
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Printer Shortcuts

XP: Documents and Settings\$USER$\Recent
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Recent

XP: Documents and Settings\$USER$\SendTo
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\SendTo

XP:
Documents and Settings\$USER$\Start Menu
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Start Menu

XP: Documents and Settings\$USER$\Templates
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Templates

XP: Documents and Settings\$USER$\Local Settings\Application Data
Vista: Users\$USER$\AppData\Local

XP: Documents and Settings\$USER$\Local Settings\History
Vista: Users\$USER$\AppData\Local\Microsoft\Windows\History

XP: Documents and Settings\$USER$\Local Settings\Temporary Internet Files
Vista: Users\$USER$\AppData\Local\Microsoft\Windows\Temporary Internet Files

XP: Documents and Settings\All Users
Vista: ProgramData

XP: Documents and Settings\All Users\Application Data
Vista: ProgramData

XP: Documents and Settings\All Users\Desktop
Vista: Users\Public\Desktop

XP: Documents and Settings\All Users\Documents
Vista: Users\Public\Documents

XP: Documents and Settings\All Users\Favorites
Vista: Users\Public\Favorites

XP: Documents and Settings\All Users\Start Menu
Vista: ProgramData\Microsoft\Windows\Start Menu

XP: Documents and Settings\All Users\Templates
Vista: ProgramData\Microsoft\Windows\Templates

XP: Documents and Settings\Default User
Vista: Users\Default

신고
Posted by kyh1026

요즘은 커널 디버깅을 하기위해 WinDBG를 많이 사용합니다.
그래서 커널 디버깅을 하기 위해 기본적으로 정리해야 할 개념들에 대해 정리해 보았습니다.

1. 디버깅 유형

  가. 라이브 디버깅

라이브 디버깅은 대상을 실행시켜 놓고 이를 Tracing하며 분석 하는 디버깅 기법입니다.
대상을 Tracing하며 분석하기 때문에 대상에 대한 이해가 보다 쉬우며, 직관적으로 다가갈 수 있습니다.

다음은 WinDBG를 이용하여 ndis.sys를 라이브디버깅하는 그림입니다.



  나. 덤프 디버깅
덤프디버깅은 시스템이 Crash 된 후 어느 지점에서 어떤 이유로 인해 시스템이 Crash됐는지 알아보고 이를 수정하는 디버깅 기법입니다. 보통 커널모드에서는 조금의 실수도 시스템 Crash로 이어지기 때문에 많이 쓰이는 디버깅 방법입니다.

다음 화면은 시스템 Crash로 인해 덤프디버깅 하는 그림입니다.


2. 심볼(Symbol)
  가. 심볼 개념
심볼파일은 어플리케이션, 혹은 드라이버 등을 개발하고 이를 링킹하는 작업이 이루어질 때, 생성되는 파일입니다. 심볼파일은 바이너리가 실행될때 필요하진 않지만, 디버깅 과정에서 아주 유용하게 사용되는 다양한 정보를 가지고 있습니다.

다음은 심볼이 포함하고 있는 정보입니다.

 전역변수
 지역변수
 함수이름
 EntryPoint
 FPO Data
 Source Linenumber

이러한 정보들은 바이너리를 디버깅 할 때 정보를 제공해 줌 으로써 디버깅작업을 좀 더 효율적으로 진행하게 도와줍니다.

  나. 심볼 유무에 따른 차이
NIDS는 심볼이 있고, vmmouse는 심볼이 없습니다.

NDIS를 디스어셈블링 한 결과입니다.

vmmouse를 디스어셈블링 한 결과입니다.

심볼이 있는경우는 심볼의 정보를 참조해서 함수라던지 이름이 잘 나오지만 심볼이 없는경우 offset값으로 판단을 하게 됩니다.

이렇게 심볼이 있는 바이너리를 디버깅 할 때와 심볼이 없는 바이너리를 디버깅 할 때 획득 할 수 있는 정보의 양이 달라지는 것을 확인할 수 있습니다. 이 말은 디버깅을 하려는 바이너리와 일치하는 심볼 파일이 있는지 확인을 해야 한다는 것을 의미합니다.
이런 이유로 라이브 디버깅과 덤프 디버깅 에 대하여 디버깅을 할 경우 심볼이 필요합니다.

3. 명령어

 가. BP VS BU
  (1)BP명령어
bp명령어는 직접적인 주소에 브레이크 포인트를 설치합니다. 그러므로 로딩되지 않은 모듈에는 브레이크 포인트를 설치하지 못합니다. 즉 로딩된 모듈에 브레이크포인트를 설치하고 디버깅 할 때에 주로 사용합니다. 그리고 Debuggee가 다시 시작될 경우 해당 주소에는 모듈의 내용이 맵핑되어 있지 않기 때문에 설치됐던 브레이크 포인트는 전부 사라지게 됩니다.

  (2)BU명령어
bp와는 달리 로딩되지 않은 모듈에 브레이크 포인트를 설치 할 수 있습니다. 이를 Unresolved BreakPoint 라고 부릅니다. 그리고 Debuggee가 다시 시작 될 경우 설치됐던 브레이크 포인트는 그대로 남아있게 됩니다. 

 나. 조건
  (1) j (if - else)

if – else 형식의 명령어로 조건이 맞을 때와 맞지 않을 때 각각에 대한 명령을 내릴 수 있습니다.

KD > bp 0x87ffb4e7 “j(MySymbol = 0) ‘’; ‘gc’”

 bp 0x87ffb4e7  0x87ffb4e7 브레이크 포인트를 설치
 j(MySymbol = 0)  if(MySymbol = 0)
 ‘’  if문이 참일 실행
 ‘gc’  if문이 거짓일 브레이크 포인트를 실행


  (2) z (while)
while문 형식의 명령어로 특정 조건을 만족할때까지 같은 작업을 반복할 수 있습니다.

KD > t;z(eax=0x875a4d00)

 t  트레이싱
 z(eax=0x875a4d00)  eax 0x875a4d00 일때까지

신고
Posted by kyh1026
이 글을 포스팅하기위해 참고한 원문입니다. 포스팅이 이해가지 않을경우 참고하세요 ^^


참고 주소 : http://hexblog.com/2009/01/kernel_debugging_with_ida.html


저는 vm_ware6.5  OS는 XP SP3 이고, IDA 5.5버전을 이용했습니다.

우선 부팅시 로컬 모드로 들어가야 하기 때문에 debugee의 boot.ini 파일에 부팅모드를 추가해 주어야 합니다.

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional - Local Debug" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200


이를 추가 한 후 vmware에서 시리얼 포트를 추가하기위해 하드웨어 세팅을 합니다.






세팅이 끝나고 완성된 모습입니다.




그리고 IDA를 실행합니다.

Debugger -> Attach -> Windbg debugger 로 가서



connection string 에  com:port=\\.\pipe\com_1,baud=115200,pipe 를 입력합니다.




입력 후 Debug_options를 클릭 하고




Set specific_options 클릭 후 Kernel_mode debugging체크, Configuration에서 WinDBG의 경로를 입력합니다.

저의 경우는 C:\WinDDK\7600.16385.0\Debuggers 입니다.




ida세팅이 완료되면 다음과같은 창이 뜹니다.




이제 디버깅하러 고고씽~
신고
Posted by kyh1026

코드프로젝트에 실려있는 내용입니다.

괜찮은 내용들이 많습니다.

http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=961412

신고
Posted by kyh1026