Hack/Reversing
-
Garbage CodeHack/Reversing 2015. 2. 25. 20:44
Garbage Code는 말그대로 쓰레기 코드이다. 리버싱하는데 리버서들에게 혼란을 주기위해 넣는 코드로, 아무의미없는 코드로 되어있다. push eaxpush ebxpush ecxpop ecxpop ebxpop eax 해당 코드는 아무의미없는 코드이다.단지 eax와 ebx, ecx값을 푸쉬하고 결국엔 다시 꺼내온다. 그냥 왔다갔다 시키는 코드인데, 이 사이에 mov 코드를 숨겨놓으면 리버서들은 더욱 힘들어진다. push eaxmov eax,0x18mov eax,ebxpush ebxxor eax, eaxmov ebx,ecxmov eax,ebxpush ecxmov ecx,0x37pop ecxpop ebxpop eax 첫번쨰 코드와 다른게없다 모든 레지스터들은 디폴트값을 가진다. 코드를 분석해보면 eax에 ..
-
Hot PatchingHack/Reversing 2015. 2. 25. 13:16
리버싱을 하다보면 NOP다음에 MOV EDI, EDI코드가 있는것을 한번쯤 본적 있을것이다. 이를 핫패칭이라하는데, 핫패칭은 필요한코드를 별다른 재부팅없이 바로 메모리에 적용할수있는 기술이다. 함수 바로앞에 NOP를 포함해 5바이트가존재하는데, NOP,NOP,NOP,NOP,MOV EDI,EDI NOP에 JMP를 덮어씌워 실제 사용되는코드에 오버라이트하지않고 점프할수있다.MS에서 제공해주는 코드이다. 해당 5바이트만 존재하면 32비트 주소 어디든지 점프할수있다.
-
64BIT Executable and Linkable FormatHack/Reversing 2015. 2. 15. 11:01
e_ident[EI_MAG0] ~e_ident[EI_MAG3] - 7F뒤에 ELF라는 스트링이 따라서 달려온다, ELF로는 7F 45 4C 46이 오게된다 e_ident[EI_CLASS] -32비트, 64비트 구분공간 값이 1과 2로 나타내어진다.( 01 : 32BIT , 02: 64BIT) 해당 파일은 64비트라는것을 알수있다. e_ident[EI_DATA] -리틀엔디언, 빅엔디언을 나타낸다 (01: LE, 02: BL) e_ident[EL VERSION] -ELF의 버전을 나타낸다 (1: Original ELF) e_type - 1: relocatable, 2: executable, 3: shared, or core, 4: respectively. e_machine - 시스템 아키텍쳐를 나타낸다. 0..
-
ELF 구조Hack/Reversing 2015. 2. 13. 13:04
ELF는 Executable and Linkable Format의 약자로, 프로그램을 다시짜고, 재컴파일해야할 필요성을 없앴다. ELF Section .text- 프로그램의 텍스트 또는 실행가능한 명령어들을 담고있다. 해당 섹션은 EXE의 섹션과 동일한 역할을한다.Type: SHT_PROGBITSFlags: SHT_ALLOC + SHT_EXECINSTR .data-프로그램 메모리영역에 제공되는 초기화된 변수(데이터)들을 담고있다.Type: SHT_PROGBITSFlags: SHT_ALLOC + SHT_WRITE .rodata-프로세스의 이미지에서 쓰기 불가능한 세그먼트에 사용되는 읽기전용 데이터들을 담고있다. .bss- 프로그램의 메모리 영역에 제공되는 초기화되지않은 변수(데이터)들을 담고있다. 목적파일..