본문 바로가기

해킹/리버싱엔지니어링6

함수 호출 규약 리버싱 엔지니어링을 할 때 반드시 각 함수의 역할을 파악해야합니다. 함수가 어떻게 생겼고 인자가 몇 개인지 등에 대한 정보를 추출해야합니다. 이제부터 내용을 확인할 수 있는 함수 규약을 알아봅시다. _cdecl _stdcall _fastcall _thiscall 확인해야 할 점 : 디스어셈블된 코드를 보고 어떤 콜링 컨벤션(calling convection) 에 해당하는지 파악 -> call 문을 보고 함수의 인자가 몇 개이고 어떤 용도로 쓰이는지를 분석하기 위해 1. _cdecl 위 함수를 돌려서 어셈블리 코드를 확인해봅시다. _cdecl 는 call , 함수 호출 후 add esp,8 과 같이 함수 밖에서 스택을 보정하는 코드가 등장한다면 _cdecl 방식 함수입니다.해당 스택 크기를 통해 함수 파라.. 2020. 11. 18.
Base Relocation Table 오늘은 PE 파일의 재배치 (Relocation) 과정에 사용되는 Base Relocation Table의 구조와 동작원리에 대해 알아보겠습니다. -PE 재배치 PE파일(EXE/DLL/SYS) 이 프로세스 가상 메모리에 로딩(loadiong) 될때 PE 헤더의 ImageBase주소에 로딩 됩니다.(ImageBase 주소는 NT Header에 Optional Header 안 에 있습니다.) DLL이나 SYS 같은 경우 ImageBase 위치에 이미 다른 파일이 로딩되어있다면 충돌을 비해 다른 비어있는 주소 공간에 로딩됩니다. 이를 PE Relocation 이라고 합니다. -> PE파일이 ImageBase에 로딩되지 못하고 다른 주소에 로딩될때 수행되는 일련의 작업들 의미. 참고) ImageBase EXE .. 2020. 5. 1.
실행 압축 실행 압축(Run-Time Packer)는 소트웨어 역공학의 단골 주제입니다. 오늘은 이에 대해 알아봅시다. 1. 데이터 압축 우리가 일상에서도 자주 쓰고있는 게 데이터 압축입니다. 어떤 형태의 파일이나 데이터라도 내부는 바이너리로 되어 있기 때문에 압축 알고리즘을 사용하여 크기를 줄일 수 있습니다. 이 때 압축 본을 100% 복원 시킬 수 있다면 비손실 압축(Lossless Data Compression) 이라고 하고 복원할 수 없다면 손실압축(Loss Data Compression) 이라고 합니다. -비손실 압축 : 7-zip, 빵집과 같은 압축 프로그램을 이용해서 파일을 압축시키는 경우가 비손실 압축의 예에 해당합니다. 대표적인 예로는 Run-Length,Lempel-Ziv,Huffman 등이 있습.. 2020. 4. 28.
EAT정리 https://com24everyday.tistory.com/17 IAT 정리 IAT(Import Address Table) : 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하는지 기술한 테이블 핵심 개념 : process,memory,DLL 구조 IAT 를 이해하기 전, DLL의 대한 이해가 필요하다. Import : library에.. com24everyday.tistory.com IAT 를 알고나면 좀더 쉽게 EAT를 이해할 수 있다. EAT(Export Address Table) : 라이브러리 파일에서 제공하는 함수 -> 다른 프로그램이 사용 하게 하기 위한 매커니즘 EAT를 통해서만 해당 라이브러리에서 익스포트하는 함수의 시작 주소 정확하게 구할 수 있음. IMAGE_EXPORT_DIRECTO.. 2020. 4. 25.