IAT 와 EAT 설명 사이트 : https://jamielim.tistory.com/entry/Reversing-IAT%EC%99%80-EAT-%EB%A1%9C%EB%94%A9-%EA%B3%BC%EC%A0%95
https://idlecomputer.tistory.com/180
Dynamic Link Library, 동적링크로 실행파일에서 해당 라이브러리 기능을 사용시에만 참조해 기능을 호출할 수 있는 방법이다. 여러 프로세스에서 공유하며 쓰는 라이브러리로 멀티태스킹 환경에서 각 프로세스마다 라이브러리를 갖고 그 용량을 차지하는 것보다 메모리에 한 번 로딩시켜 프로세스마다 공유시키면 메모리를 더 효율적을 사용할 수 있다.
프로그램내에서 사용되는 순간에 로딩하고 사용이 끝나면 메모리에서 해제 시키는 방법(Explicit Linking)과
프로그램 시작할 때 같이 로딩되어 프로그램 종료 할 때 메모리에서 해제되는 방법(Implicit Linking)이 있습니다.
라이브러리는 링크시 필요함
DLL는 프로그램 실행 혹은 함수 실행시 필요함
호환성 때문이다.
:https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=yheekeun&logNo=220709173937
IID 에 INT에 있는 주소를 IAT에 옮기는 이유가 뭘까라는 의문이 든다
그냥 INT 주소를 옮기면 안되나 라는 생각이 든다. 하지만, DLL이 프로세스에 올라갈때, imagebase는 항상 고정이 아니다. INT 주소는 DLL 내부에 위치이다. IAT는 프로세스의 위치이다.
문제가 열리지 않는다...
https://www.virustotal.com/gui/file/d5c694a33baf56816ff3907ac6e1ee56f5fb78f1c06ada04f3b6cb22c3893f21/details
바이러스 토탈을 돌리면 어떤 패커를 사용한지 알수 있다. 구글링을 통해서 FSG는 JMP 구문을 통해서 원본 코드로 갈수 있다 이를 이용하면 OEP를 찾을 수 있다.
UPX도 마찬가지로 바이러스 토탈에 올리면 어떠한 패커를 사용한지 알수 있고, 이를 기반으로 구글링을 통해서 언패킹 정보를 얻어서 언패킹하면된다. PUSHAD -> popAD -> OEP 진입한다는 루틴을 이용하면 된다고 한다.
UPX의 특징을 잘 이용하여 OEP로 진입한다.
IAT가 문제가 생겨서 트리를 삭제시켰다.
그 후에 삭제된 IAT를 제외하고 나머에 맞게 VA와 SIZE 변경시키고 덤프를 뜬뒤, fix Dump를 하였다.
프로그램이 정상적으로 작동하였다. 하지만 왜 IAT한개 삭제되면 정상적으로 작동이 되지 않을 것 같은데 정상적으로 작동했는지는 의문이다.
winUpack의 특징도 UPX랑 같이 초반에 스택이 변경된 후 다시 그 위치로 스택이 다시 돌아올때가 OEP이다. 그 특징을 이용하면 언패킹이 가능하다.