Reversing/Information

예를 들어 0xff는 이진수로 11111111이다. 이때, add 0xff, 1을 하면은 0x100, 이진수로 100000000이 되는데 최상위비트가 변하지않았으므로 부호가 바뀌지 않았다. 부호는 똑같고 자리올림만 발생했으므로 CF가 설정된다. 만약, add 0x7f, 1을 한다고 하면은 0x7f는 이진수로 01111111, 0x7f에 +1을 한값은 0x80, 이진수로 10000000이므로 최상위 값이 0에서 1로 변했다. 이는 양수에서 음수로 변화한것으로 부호가 바뀌었기 때문에 OF가 설정된다, 즉, 계산했을 때 최상위 비트가 바뀌면 (부호가 바뀌면) OF가 설정되고 아닌 경우엔 CF가 설정된다.
디버깅 전 이 부분은 PEView를 잘 활용해야 한다. UPX 실행 압축된 PE File의 특징을 말하자면 UPX0 (첫번째 섹션) 은 RawDataSize가 0이다. 나중에 압축 해제된 코드들이 들어갈 자리이다. UPX1 (두번째 섹션) 에는 압축된 코드와 압축해제 코드가 들어가있다. 1. notepad.exe 010073B4에서 Dos Signature와 비교함 (5A4D = Dos Signature) 010073C0에서 NT_Header Signautre와 비교함 (5045 = NT_Header Signature) EP는 0100739D 2. 디버깅 목적 원본 코드의 EP 즉, OEP(Original Entry Point)를 notepad_upx에서 찾는것 3. UPX 파일 트레이싱 압축해제 과정은..
데이터 압축 1. 비손실 압축 : 압축된 파일을 100%복원 가능 (ex. 7-zip, 빵집) 2. 손실 압축 : 의도적인 손상을 주어서 압축률을 높이는 압축 (ex. jpg, mp3, mp4) 실행 압축 - PE 파일 대상(exe, dll, sys) - 일반 압축과 다르게 PE 파일의 실행이 가능함 패커 패커란 실행 파일 압축기를 말함 - PE 파일의 크기를 줄이고자 하는 목적 - PE파일의 내부 코드와 리소스를 감추기 위한 목적 (ex. UPX, ASPack, UPack, PESpin, NSAnti) 프로텍터 PE파일을 리버싱으로부터 보호하기 위한 유틸리티
여러가지 레지스터가 있는데 그중에서 범용 레지스터만 알아보겠다. EAX : Accumulator for operands and results data 일반적으로 함수 리턴 값에 사용 EBX : Pointer to data in the dS segment ECX : Counter for string and loop operations 반복문 명령어에서 반복 카운트로 사용 EDX : I/O Pointer EBP : Pointer to data on the stack (in the SS segment) EBP는 함수가 호출되었을 때 그 순간의 ESP를 저장하고 있다가, 함수가 리턴하기 직전에 다시 ESP에 값을 돌려주어 스택이 깨지지 않도록 함 (스택 프레임 기법) ESI : source pointer for..
PE file 구조 중 DOS header 부터 Section header 까지를 PE header, 그 이외의 부분을 PE body라고 부른다 PE header의 구조를 책을 참고하여 아래와 같이 큰 부분들만 정리해 봤다.
프레딕
'Reversing/Information' 카테고리의 글 목록