분류 전체보기

기타

pdf 파일 구조 파싱

아래 사이트에서 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   아래 파일은 원본 코드에서 터미널 창에 출력되는 내용을 메모장에 저장.

C/C언어 코드 기록

우연히 발견한 컴파일 최적화 적용시 최적화 적용된 함수 호출

우연히 재밌는 동작을 발견해서 기록합니다. 위 사진속 코드를 보면 main함수에서 TestFunc함수를 호출하고 있습니다. 그렇다면 당연히 TestFunc함수가 call 됐을거라 예상하겠지만 현재 코드에서는  TestFunc함수를 한번만 사용해서 그런지 Inline으로 처리 된걸 확인 할 수 있습니다. (아래 사진 참고) 따라서 이건 함수가 실제 호출된 것이 아니라, 컴파일러가 함수 내용을 인라인(Inline) 처리했기 때문에 스택 프레임이 존재하지 않습니다. 추가.함수 인라인이란??컴파일러 최저기화 중 하나로, 작은 함수는 실제 호출(call)을 하지 않고, 호출 지점에 함수 본문 코드를 "복사 붙여넣기"하듯 삽입합니다.그래서 컴파일 후에는 TestFunc함수 호출이 사라지고, main함수 아네 코드가..

Windows Driver/Kernel & Driver 개발

BOOL WINAPI ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) 함수

BOOL WINAPI ReadFile(     HANDLE hFile,                        // 읽을 대상 파일 or 디바이스 핸들     LPVOID lpBuffer,                      // 읽은 데이터를 저장할 유저 모드 버퍼     DWORD nNumberOfBytesToRead,           // 읽을 바이트 수     LPDWORD lpNumberOfBytesRead,          // 실제로 읽은 바이트 수 (출력)     LPOVERLAPPED lpOverlapped             // 비동기 I/O 용 구조체 (일반적인 경우 NULL) );  파라미터 설명파라미터설명hFile읽을 대상의 핸들 (파일, 드라이버, 소켓, 파이프 등)lp..

Windows Driver/Kernel & Driver 개발

DO_DIRECT_IO vs DO_BUFFERED_IO 차이 & 성능 비교

DO_DIRECT_IO vs DO_BUFFERED_IO 차이 & 성능 비교항목DO_DIRECT_IODO_BUFFERED_IO메모리 처리 방식MDL (Memory Descriptor List)로 유저 모드 버퍼를 커널에서 직접 접근I/O Manager가 유저 모드 버퍼를 커널 메모리에 복사해서 SystemBuffer를 제공데이터 복사 횟수유저 버퍼 ↔ 커널 버퍼 복사 ❌ (복사 없음)유저 버퍼 → 커널 버퍼 복사 있음버퍼 접근 방법MmGetSystemAddressForMdlSafe()로 커널에서 유저 버퍼 직접 접근바로 Irp->AssociatedIrp.SystemBuffer 사용 가능성능★ 더 좋음 (복사가 없으므로 대용량 처리에 유리)복사 때문에 약간 느림 (특히 큰 데이터)안전성유저 버퍼를 커널에서 ..

lwj789
'분류 전체보기' 카테고리의 글 목록