아래 사이트에서 pdf 파일 구조 파싱하는 소스 사용.PDF Tools | Didier Stevens PDF ToolsHere is a set of free YouTube videos showing how to use my tools: Malicious PDF Analysis Workshop. pdf-parser.py This tool will parse a PDF document to identify the fundamental elements used in the…blog.didierstevens.com 아래 파일은 원본 코드에서 터미널 창에 출력되는 내용을 메모장에 저장.
우연히 재밌는 동작을 발견해서 기록합니다. 위 사진속 코드를 보면 main함수에서 TestFunc함수를 호출하고 있습니다. 그렇다면 당연히 TestFunc함수가 call 됐을거라 예상하겠지만 현재 코드에서는 TestFunc함수를 한번만 사용해서 그런지 Inline으로 처리 된걸 확인 할 수 있습니다. (아래 사진 참고) 따라서 이건 함수가 실제 호출된 것이 아니라, 컴파일러가 함수 내용을 인라인(Inline) 처리했기 때문에 스택 프레임이 존재하지 않습니다. 추가.함수 인라인이란??컴파일러 최저기화 중 하나로, 작은 함수는 실제 호출(call)을 하지 않고, 호출 지점에 함수 본문 코드를 "복사 붙여넣기"하듯 삽입합니다.그래서 컴파일 후에는 TestFunc함수 호출이 사라지고, main함수 아네 코드가..
BOOL WINAPI ReadFile( HANDLE hFile, // 읽을 대상 파일 or 디바이스 핸들 LPVOID lpBuffer, // 읽은 데이터를 저장할 유저 모드 버퍼 DWORD nNumberOfBytesToRead, // 읽을 바이트 수 LPDWORD lpNumberOfBytesRead, // 실제로 읽은 바이트 수 (출력) LPOVERLAPPED lpOverlapped // 비동기 I/O 용 구조체 (일반적인 경우 NULL) ); 파라미터 설명파라미터설명hFile읽을 대상의 핸들 (파일, 드라이버, 소켓, 파이프 등)lp..
DO_DIRECT_IO vs DO_BUFFERED_IO 차이 & 성능 비교항목DO_DIRECT_IODO_BUFFERED_IO메모리 처리 방식MDL (Memory Descriptor List)로 유저 모드 버퍼를 커널에서 직접 접근I/O Manager가 유저 모드 버퍼를 커널 메모리에 복사해서 SystemBuffer를 제공데이터 복사 횟수유저 버퍼 ↔ 커널 버퍼 복사 ❌ (복사 없음)유저 버퍼 → 커널 버퍼 복사 있음버퍼 접근 방법MmGetSystemAddressForMdlSafe()로 커널에서 유저 버퍼 직접 접근바로 Irp->AssociatedIrp.SystemBuffer 사용 가능성능★ 더 좋음 (복사가 없으므로 대용량 처리에 유리)복사 때문에 약간 느림 (특히 큰 데이터)안전성유저 버퍼를 커널에서 ..