목록바이너리 분석 (14)
topcue
IntroductionJunk Code InsertionMetamorphic CodeData EncodingOpaque PredicatesSplittingControl Flow FlatteningVirtualizationPolymorphic Code참고Introduction바이너리 난독화(binary obfuscation)의 주요 목적은 바이너리의 정적 분석 과정을 방해하는 것이다.바이너리의 심벌(변수 및 함수) 이름을 바꾸는 것은 변수가 어떤 데이터를 보유하고 있는지에 대한 정보 또는 함수명에서 동작에 대한 단서 등이 손실된다는 것을 의미한다.코드를 난독화하는 데에는 여러 가지 이유가 있을 수 있다.가장 일반적인 경우는 DRM(Digital Rights Management) 때문이다. 예를 들어, 자격..
An Overview of Symbolic ExecutionSymbolic vs. Concrete ExecutionThe Symbolic StateSymbolically Executing an Example ProgramVariants and Limitations of Symbolic ExecutionStatic Symbolic Execution (SSE)Dynamic Symbolic Execution (Concolic Execution)Online vs. Offline Symbolic ExecutionSymbolic StatePath CoverageIncreasing the Scalability of Symbolic ExecutionSimplifying ConstraintsAvoiding the Con..
Taint AnalysisDynamic Taint AnalysisDTA in Three StepsDefining Taint SourcesDefining Taint SinksTracking Taint PropagationDTA Design FactorsTaint GranularityTaint ColorsTaint Propagation PoliciesOvertainting and UndertaintingControl DependenciesShadow MemoryBitmap-Based Shadow MemoryMulticolor Shadow Memory참고 및 인용Taint Analysis오염 분석(taint analysis)이란 프로그램의 메모리에 오염(taint)이라는 특정 값을 삽입한 후, 이 데이터를 추..
IntroductionStatic vs. Dynamic Binary InstrumentationStatic Binary InstrumentationA Naive SBI ImplementationThe int 3 ApproachThe Trampoline ApproachTrampoline Control FlowHandling Indirect Control FlowReliability of the Trampoline ApproachTrampolines in Position-Independent CodeDynamic Binary InstrumentationArchitecture of a DBI System참고 및 인용Introduction컴퓨터 과학 분야에서 계측(instrumentation)이란 프로그램의 행..
Bare-Metal Binary ModificationModifying Shared Library Behavior Using LD_PRELOADInjecting a Code SectionInjecting an ELF Section: A High-Level OverviewOverwriting the PT_NOTE SegmentRedirecting the ELF Entry PointUsing elfinject to Inject an ELF SectionCalling Injected CodeEntry Point ModificationHijacking Constructors and DestructorsHijacking GOT EntriesHijacking PLT EntriesRedirecting Direct a..
Binary Analysis PropertiesInterprocedural and Intraprocedural AnalysisFlow-SensitivityContext-SensitivityControl-Flow AnalysisLoop DetectionCycle DetectionData-Flow AnalysisReaching Definitions Analysisuse-def ChainsProgram Slicing참고 및 인용Binary Analysis PropertiesInterprocedural and Intraprocedural Analysis함수 단위 분석의 또 다른 이점은 규모 가변성(scalability)이다.일부 분석 방법은 실제로 적용할 때 제대로 동작하지 않는 경우가 많다. 발생 가능한 조건..
Static DisassemblyLinear DisassemblyRecursive DisassemblyDynamic DisassemblyCode Coverage StrategiesTest SuitesFuzzingSymbolic ExecutionStructuring Disassembled Code and DataStructuring CodeFunction DetectionControl Flow GraphsCall GraphsObject-Oriented CodeStructuring DataDecompileIntermediate RepresentationsEffects of Compiler Settings on Disassembly참고 및 인용Static Disassembly정적 디스어셈블(static dis..
StackStack FrameFunction CallsFunction PrologueFunction EpilogueCalling ConventionsCalling Conventions for x86Calling Conventions for x64Flow of ControlStack and Frame Analysis참고 및 인용Stack스택은 반환 주소(return address), 함수 매개 변수, 지역 변수 등 함수 호출과 관련된 데이터를 위한 메모리 영역이다.스택(Stack)은 후입선출(LIFO, Last-In-First-Out) 자료구조다. 바이너리의 스택이라는 이름이 여기서 유래되었다.Stack Layout (Reversed top-bottom for easy explanation).LIFO 방식..