분류 전체보기168 안티 디버깅 Dynamic 안티 디버깅 분류 Static, Dynamic - Static 기법은 디버깅 시작할 때 한번만 해체를 해주는 기법 - Dynamic 기법은 디버깅을 진행하면서 (해당 Anti기법을) 만날 때마다 해결하는 기법 Dynamic 안티 디버깅의 목적 목적은 내부 코드와 데이터를 리버싱으로부터 감추고 보호하는 것. 보통PE 프로텍터들에서 많이 사용되며 원본 프로그램의 핵심 알고리즘을 보호하기 위하여 사용됩니다. 디버거로 해당 프로그램이 실행될 수는 있을지언정 원본 프로그램의 핵심코드(OEP)로 트레이싱 하여 찾아갈 수 없도록 방해합니다. 예외 예외(Exception)를 이용하는 방법은 안티 디버깅의 단골 메뉴입니다. 정상적으로 실행된 프로세스에서 예외가 발생하면 SEH(Structured Exception Han.. 2022. 10. 5. 안티 디버깅 Static 안티 디버깅 분류 Static, Dynamic - Static 기법은 디버깅 시작할 때 한번만 해체를 해주는 기법 - Dynamic 기법은 디버깅을 진행하면서 (해당 Anti기법을) 만날 때마다 해결하는 기법 Static 안티 디버깅의 목적 디버기 프로세스에서 자신이 디버깅 당하는지 여부를 파악하는 기법 만약 디버깅 중이라고 판단되면 일반 실행과는 다른 코드(주로 종료 코드)를 실행하는 것이 핵심입니다. 구현 방법으로는 디버거를 탐지하는 방법, 디버깅 환경을 탐지하는 방법, 디버거를 강제 분리시키는 방법등이 있습니다. 회피 방법은 탐지 코드에서 얻어 오는 정보를 파악하여 아예 그 정보 자체를 변경해버리는 것입니다. PEB 현재 프로세스의 디버깅 여부를 판단하기 위해 PEB(Process Environme.. 2022. 10. 4. 직접적인 디버거 탐지 방법, 간접적인 디버거 탐지 방법 직접적인 디버거 탐지 방법 - 자신의 프로스세가 디버깅 당하는지 체크를 하는것 간접전인 디버거 탐지 방법 - 디버깅 환경을 체크해서 디버거의 낌세가 조금이라도 보이면 즉시 실행을 멈추는 것 2022. 9. 29. NtQueryInformationProcess 디버거를 탐지해내는 기법에 대한 설명입니다. ntdll!NtQueryInformationProcess() API를 이용하면 프로세스의 디버깅 관련 정보를 비롯하여 매우 다양한 정보를 얻을 수 있습니다. NTSTATUS WINAPI NtQueryInformationProcess( __inHANDLE ProcessHandle, __inPROCESSINFOCLASS ProcessInforamtionClass, __outPVOID ProcessInformation, __inULONG ProcessInformationLength, __out_optPULONG ReturnLength ) 두 번재 파라미터 PROCESSINFOCLASS ProcessInformationClass에 원하는 정보형식을 입력한 후 NtQu.. 2022. 9. 29. IA-32 Instruction 포맷 IA-32 Instruction은 다음과 같이총 6개의 항목으로 구성되어있습니다. 여기서 Opcode 항목은 반드시 존재해야 하며, 나머지 항목은 옵션입니다. Instruction Prefixes Instruction Prefixes는 옵션 항목으로, 뒤에 특정한 Opcode가 나올 때 사용되어 Opcode의 의미를 보조하는 역할을 합니다. Prefix 항목은 1바이트 크기를 가집니다. Opcode Opcode(Operation Code)는 필수 항목이며 실제적인 명령어를 나타냅니다. Opcode는 1~3 바이트 크기를 가집니다. 일반적인 응용프로그램 디버깅에서는 주로 1바이트 크기의 Opcode가 대부분이고, 가끔 2바이트 크기의 Opcode들이 있습니다. 3바이트 크기의 Opcode는 주로 MMX(M.. 2022. 9. 27. 용어정리 용어 설명 Machine Language 기계어, CPU가 해석할 수 있는 Binary(0과 1) 코드 Insturction 하나의 기계 명령어 단위(OpCode와 operand 등으로 구성됨) OpCode Operation Code, Instruction 내의 실제 명령어 Assembley 어셈블리 프로그래밍 언어 Assemble 어셈블리 코드를 기계어(OpCode)로 변환하는 작업(C/C++ 언어의 Compile과 유사) Assembler Assemble 작업을 수행하는 프로그램 (ex: MASM, TASM, FASM등) Disassemble 기계어를 다시 어셈블리 언어로 변환하는 작업(Unassemble 이라는 용어를 쓰기도함) Disassembler Disassemble 작업을 수행하는 프로그램(.. 2022. 9. 20. 이전 1 ··· 13 14 15 16 17 18 19 ··· 28 다음 반응형