본문 바로가기

전체 글170

[Reversing]Defcon 2015 Pr0dk3y Pr0dk3y 의 기본 소스는 IDA의 Hexray로 재구성하였다.필요한 Data도 긁어서 선언하였고 직접적인 바이너리와 같은값을 주어서 함수를 빠져나왔을때 같은결과가 나오는지로 비교해가면서 소스를 완성시켰다. #include #include /* 8f2 26 case 0xFFFFF8B3://16BB var7=a1[i]-65; break; case 0xFFFFF8C8: var7=a1[i]-66; break; case 0xFFFFF8DD: var7=a1[i]-67;*/ BYTE table[] = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; DWORD dword_1E08[41] = { 0xFFFFF8F2, 0xFFFFF8F2, 0xFFFFF8F2, 0xFFFFF8F2, 0xFFFFF8F2.. 2015. 6. 3.
[ROOTKIT #6] 간단한 드라이버 로더 >잘안보이는 스샷은 클릭하셔서 확대해서 보시면 됩니다! 2014. 6. 22.
[ROOTKIT #5] Symbolic Link 유저모드 프로그램이 디바이스를 쉽게 찾도록 디바이스 이름에 Symbolic Link 를 걸어 줍니다.옵션사항이지만 다른 룻킷 코드를 볼때 이해에 도움이 되겠죠?지난 시간에 디바이스 객체를 만들때처럼 UNICODE_STRING 구조체를 만들고IoCreateSymbolicLink 함수를 호출하면 됩니다.이제 아무 일도 하지 않았던 MyUnload 함수에서 IoDeleteSymbolicLink 와 IoDeleteDevice 를호출해서 적절한 청소작업을 하도록 수정합니다. [ 코드 해석 ] 줄번호를 기준으로 해석을 달아봅니다. 6 디바이스 SymblockLink 이름을 MyDevice 로 정합니다.8 UNICODE_STRING 타입의 deviceLinkUnicodeString 변수 선언20~21 RtlInitU.. 2014. 6. 22.
[ROOTKIT #4] 디바이스 생성 유저 모드와 커널 모드 사이에 의사소통을 하려면 드라이버는 디바이스를생성해야 합니다. 디바이스를 생성할때 IoCreateDevice 함수를 사용하는데인자중에 UNICODE_STRING 구조체를 요구합니다. 이 구조체를 만드는데는RtlInitUnicodeString 함수가 사용되며 인자로 디바이스 이름을 Unicode String 형태로전달해야 합니다. [ 코드 해석 ] 5 디바이스 이름을 MyDevice 로 정하고 앞에 붙은 L 은 Unicode String 을 의미6 IoCreateDevice 함수가 생성해주는 디바이스 객체를 담을 변수13 NTSTATUS 타입의 ntStatus 변수 선언14 UNICODE_STRING 타입의 deviceNameUnicodeString 변수 선언16~17 RtlInit.. 2014. 6. 22.
반응형