Kernel Detective 1.3.1 버젼에서 업데이트 되었습니다.
개인적인 바램으론 , Windows 7에서 안정성 향상이 되었으면 하는 바램입니다.
일단, 제가 실행해보니 Windows 7 에서는 특별한 문제는 아직까지 발견하지 못했습니다.

Update Date : Wednesday 08 December 2010 - 16:38:33


What's new in v1.4.0 :

- Added plugins system
- Added support for windows server 2008, seven sp1
- Enhanced stability on NT 6.0+ (windows vista/seven)
- Improved driver scan
- Improved code hook scan
- Fixed bug prevent the tool from working on windows xp
- Fixed bug related to long paths
- Fixed bug in process/driver dumper
- Fixed bug in IDT scan




이번 버젼에서 가장 큰 개선점은 , 플러그인 시스템이 지원된다는것입니다.
그중에서 기본으로 탑재되있는 C/C++기반의 스크립트 기능이 강력한것 같네요.
아래 Example 코드를 보시겠습니다.

#include "hxdmp.kds"

USHORT MasterBootRecord[512/sizeof(USHORT)];
UCHAR StatusRegister;
CHAR __strbuff[512];

KdWriteLog("Accessing disk by PIO-Mode ...\r\n");
memset((char *)&MasterBootRecord, 0x00, sizeof(MasterBootRecord));

KdWritePortChar(0x1f6, 0xA0);
KdWritePortChar(0x1f2, 0x01);
KdWritePortChar(0x1f3, 0x01);
KdWritePortChar(0x1f4, 0x00);
KdWritePortChar(0x1f5, 0x00);
KdWritePortChar(0x1f7, 0x20);
for (ULONG tryCounter = 0; tryCounter < 10000; tryCounter++) {
    StatusRegister = KdReadPortChar(0x1f7);
    if (StatusRegister & 0x08)
        break;
}

sprintf(__strbuff, "StatusRegister = %x\r\n", StatusRegister);
KdWriteLog(__strbuff);
KdReadPortBufferShort(0x1f0, MasterBootRecord, 512/sizeof(USHORT));
if (StatusRegister & 0x58) {
    KdWriteLog("Master boot record (MBR):\r\n");
    PCHAR strHexDump = HexDump((PUCHAR)MasterBootRecord, 512);
    KdWriteLog(strHexDump);
    delete strHexDump;
}



위 코드의 실행결과 입니다.


Accessing disk by PIO-Mode ...
StatusRegister = 58
Master boot record (MBR):
0x0000 : 33 c0 8e d0 bc 00 7c 8e c0 8e d8 be 00 7c bf 00 3.....|......|..
0x0010 : 06 b9 00 02 fc f3 a4 50 68 1c 06 cb fb b9 04 00 .......Ph.......
0x0020 : bd be 07 80 7e 00 00 7c 0b 0f 85 0e 01 83 c5 10 ....~..|........
0x0030 : e2 f1 cd 18 88 56 00 55 c6 46 11 05 c6 46 10 00 .....V.U.F...F..
0x0040 : b4 41 bb aa 55 cd 13 5d 72 0f 81 fb 55 aa 75 09 .A..U..]r...U.u.
0x0050 : f7 c1 01 00 74 03 fe 46 10 66 60 80 7e 10 00 74 ....t..F.f`.~..t
0x0060 : 26 66 68 00 00 00 00 66 ff 76 08 68 00 00 68 00 &fh....f.v.h..h.
0x0070 : 7c 68 01 00 68 10 00 b4 42 8a 56 00 8b f4 cd 13 |h..h...B.V.....
0x0080 : 9f 83 c4 10 9e eb 14 b8 01 02 bb 00 7c 8a 56 00 ............|.V.
0x0090 : 8a 76 01 8a 4e 02 8a 6e 03 cd 13 66 61 73 1c fe .v..N..n...fas..
0x00A0 : 4e 11 75 0c 80 7e 00 80 0f 84 8a 00 b2 80 eb 84 N.u..~..........
0x00B0 : 55 32 e4 8a 56 00 cd 13 5d eb 9e 81 3e fe 7d 55 U2..V...]...>.}U
0x00C0 : aa 75 6e ff 76 00 e8 8d 00 75 17 fa b0 d1 e6 64 .un.v....u.....d
0x00D0 : e8 83 00 b0 df e6 60 e8 7c 00 b0 ff e6 64 e8 75 ......`.|....d.u
0x00E0 : 00 fb b8 00 bb cd 1a 66 23 c0 75 3b 66 81 fb 54 .......f#.u;f..T
0x00F0 : 43 50 41 75 32 81 f9 02 01 72 2c 66 68 07 bb 00 CPAu2....r,fh...
0x0100 : 00 66 68 00 02 00 00 66 68 08 00 00 00 66 53 66 .fh....fh....fSf
0x0110 : 53 66 55 66 68 00 00 00 00 66 68 00 7c 00 00 66 SfUfh....fh.|..f
0x0120 : 61 68 00 00 07 cd 1a 5a 32 f6 ea 00 7c 00 00 cd ah.....Z2...|...
0x0130 : 18 a0 b7 07 eb 08 a0 b6 07 eb 03 a0 b5 07 32 e4 ..............2.
0x0140 : 05 00 07 8b f0 ac 3c 00 74 09 bb 07 00 b4 0e cd ......<.t.......
0x0150 : 10 eb f2 f4 eb fd 2b c9 e4 64 eb 00 24 02 e0 f8 ......+..d..$...
0x0160 : 24 02 c3 49 6e 76 61 6c 69 64 20 70 61 72 74 69 $..Invalid parti
0x0170 : 74 69 6f 6e 20 74 61 62 6c 65 00 45 72 72 6f 72 tion table.Error
0x0180 : 20 6c 6f 61 64 69 6e 67 20 6f 70 65 72 61 74 69 loading operati
0x0190 : 6e 67 20 73 79 73 74 65 6d 00 4d 69 73 73 69 6e ng system.Missin
0x01A0 : 67 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 g operating syst
0x01B0 : 65 6d 00 00 00 63 7b 9a 1a ba 12 d7 00 00 80 20 em...c{........ 
0x01C0 : 21 00 07 fe ff ff 00 08 00 00 00 f8 73 07 00 00 !...........s...
0x01D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0x01E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0x01F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa ..............U.


이제 이 프로그램을 사용하는 사람이 어떤 마음을 먹느냐에 달려있다고 봅니다.
개인적으로 이런 좋은 "안티루트킷" 프로그램이 게임핵 따위에 이용되다가 , 
nProtect GG , Ahnlab HS등에 차단되지 않았으면 하는 바램입니다.

Org Referenced : http://at4re.com


저작자 표시 비영리 변경 금지
신고

'Reverse Engineering' 카테고리의 다른 글

ZwOpenSection, ZwCreateSection을 이용한 멀티로드 방지  (3) 2011.02.27
The Rootkit Arsenal  (5) 2011.01.25
Kernel Detective 1.4  (0) 2010.12.09
Tuluka kernel inspector v1.0.394.77  (4) 2010.10.31
RKUnhooker LE v3.8.388.590 SP2  (0) 2010.10.31
IDA Stealth 1.3.2  (0) 2010.10.10
by Sone 2010.12.09 20:46

디버깅이라함은 , 이제 막 프로그램 개발에 입문하였거나, 현직 개발자 직업으로 일하고 계신분이나,
혹은  의도치않게 상용바이너리의 버그를 발견하고 이에 대해 분석할때,  자주 이용되는 기술이라고 생각된다.

디버깅툴은 이미 많이들 알고계신대로 , 가장 많이 대중적으로 쓰여지는 대표적인 것들을 나열해보자면, 

유저모드 디버깅/
MS Visual Studio , Olly Debugger, IDA  , WinDBG

커널모드 디버깅/
WinDBG , SoftIce (최근의 운영체제에서는 동작하지 않는다는것이 아쉬울뿐이다.)

요즘 대부분의 디버거들은 개발자에게 보다 친숙하게 느껴질수 있도록 하기위하여 , 
GUI 기반의 인터페이스를 지원하고 , 접근이 쉽게쉽게 이루어질수 있도록 구성되어져 있다.

WinDBG는  GUI 환경으로 개발되어졌다고는 하지만,  90%는 콘솔 인터페이스 기반이라고 봐도 무관한데,
이는 대부분 개발자들에게 접근성이 떨어지는 결과를 낳게되었고, 개발자들 사이에서 기피하는 디버거가 되버렸다.
위에서 확인할 수 있다시피 , WinDBG는  유저와 커널 모두 접근할 수 있고 ,  다양한 기능들을 제공해주지만
사용법이 어렵다는 이유만으로 기피되고 있는것이다.

그러던 와중에!  국내 개발자분들께서 WinDBG 사용법을 널리 전파하고자, WinDBG 사용법을 초보자부터 봐도 자세하고 쉽게 알수있게끔 아주 좋은 책을 내주셨다.

SAMSUNG TECHWIN | NV24HD, VLUU NV24HD, LANDIAO NV106HD | Normal program | Pattern | 1/30sec | F/2.8 | 0.00 EV | 4.3mm | ISO-120 | Off Compulsory | 2009:09:21 18:10:56
SAMSUNG TECHWIN | NV24HD, VLUU NV24HD, LANDIAO NV106HD | Normal program | Pattern | 1/30sec | F/2.8 | 0.00 EV | 4.3mm | ISO-120 | Off Compulsory | 2009:09:21 18:11:26



개인적으로 WinDBG 사용법을 너무도 모르고 있던터라 바로 질렀다!
(가끔 드라이버 엔트리포인트 앞단에 __asm int 3h(0xCC)  를 걸고  디버깅을 하곤하는데, 기본적인 bp  ba  bl bc  kb  uf  dt  process 등 이정도밖에 모르고 있던터라...)

이번에도 에이콘 출판사인데 , 에이콘 출판사 책이 지금 몇개나 있는지 궁금하구랴..
어쨌든  이게 책 홍보하는 글인가,  개인적인 생각을 쓰는건가는 잘 모르겠는데 

초보자도 매우 쉽게 접근할수있도록,  툴의 설치법 , 세팅법,  크래시파일 확보방법부터 시작해서
고급적인 내용까지  순차적으로  자세하게 다루고있는것 같다.(WinDBG의 또다른 장점이라함은 , 크래시파일 분석!)

블루스크린 케이스별  디버깅방법도 다루고있는것도 흥미로운 부분이라고 생각된다.

구매전에 주의할점은 ,  이 책의 저자는  C/C++ 언어와  기초적인 디버깅 지식(Visual Studio로 한번쯤 해봤다! 하는정도)
,  운영체제의 지식을 알고있다고 가정하고 설명을 진행한다는 것이다.
운영체제를 알아야 하는 이유는 , 아무래도 커널 디버깅또한 다루기때문에 , 프로세스 구조체 , 쓰레드 구조체  , 핸들 , Usage Count  등등등  윈도우 운영체제에 대한 용어와 개념들이 많이 등장하기때문에 요구되는것으로 보인다.

시간날때마다 틈틈히 책을 보면서 즐거운 삽질(?) 을 해봐야겠다.
(사실 디버깅도 개발경험에서 중요한 부분이기 때문에 삽질이라는 용어는 적절치 않은듯
근데 어찌보면 삽질이라는 의미가 맞는것 같기도??  뭥미 )
저작자 표시 비영리 변경 금지
신고
by Sone 2009.09.21 18:33
| 1 |