Development Stash
front end, back end, ETC...
-
Mac OS X malware 분석시 유용한 툴
1. 코드 서명 확인 $ codesign -dvvvv -r - [app_name.app/] codesign 내용을 출력해준다. bundle Identifier와 TeamIdentifier(Apple Developer Signing Certificate)는 탐지 소프트웨어에서 사용될 수 있기 때문에 분석 초기에 확인해서 기록해놓는 것이 좋다. 2. 개발자 인증서 유효성 확인 $ spctl --verbose=4 --assess --type execute [app_name.app] 파일의 code signature가 더이상 유효하지 않은 경우...
-
[OS X Internals] CH.12 Commit to Memory
Mach Virtual Memory 이 챕터에서는 XNU에서 사용되는 외부 virtual memory manager의 확장 가능한 프레임워크 뿐만 아니라 Mach의 강력한 VM primitive에 대해 설명한다. 먼저 virtual memory architecture를 전체적으로 한번 살펴보고, 물리적 메모리 관리와 커널에 제공하는 수많은 memory allocator에 대한 개요를 알아본다. 마지막으로 pager와 custom memory manager에 대해 설명한다. Virtual Memory Architecture...
-
[OS X Internals] CH.11 Tempus Fugit
Mach Scheduling 이번 챕터에서는 스케줄링에 초점을 맞춘다. Scheduling Primitives: task와 thread, 그리고 그들이 제공하는 APIs Scheduling: 알고리즘과 같은 높은 수준의 scheduling 개념 Asynchronous Software Traps(AST): scheduling에 중요한 Mach의 AST 개념 Exception Handling: 하드웨어 trap에 대한 Mach의 고유한 접근 방식 Scheduling Algorithms: Mach의 default scheduler뿐만 아니라 다른 알고리즘 구현방식을 가진 scheduler로의...
-
[OS X Internals] CH.9 From the Cradle to the Grave
Kernel Boot and Panics 이번 chapter에서는 kernel source를 line by line으로 살펴보며 kernel이 system을 initializing할 때 취하는 step을 따라가본다. 또한 처리되지 않은 CPU trap, 또는 기타 예기치 않은 kernel code path 로 인해 “panic“이 발생하는 경우 일어나는 kernel의 premature demise에 대해 설명한다. THE XNU SOURCES 이 section에서는 XNU를 얻고 compile...
-
[OS X Internals] CH.8 Some Assembly Required - (작성중)
Kernel Architectures kernel은 모든 운영 체제 에서 가장 중요한 부분이다. 따라서 CPU의 모든 기능을 활용하려면 고도로 최적화되어야 한다. 대부분의 경우 kernel은 code를 유지 관리 하면서 기계에 최대한 가깝게하기 위해 C로 작성된다. 그러나 어떤 경우에는 더 깊이 들어가 assembly를 사용하는 것 외에는 선택의 여지가 없다. 따라서 이 장에서는 Intel과 ARM 의...