api redircetion에 대해서 배운다. 이는 iat에 dll에 내부에 있는 함수 주소를 넣는 것이 아니라 다른 함수 주소를 준다. 이 주소안에 실질적인 함수 주소가 있다. 이는 언패킹에 어려움을 준다.
파일을 언패킹한 뒤에 보면, iat를 인식하지 못하고 있다. 물론 iat를 구할때, va나 size를 잘못 줘서 발생할 수 도 있는 문제이다.
참고로 rav는 iat 주소 값이고, ptr은 438040 안에 있는 값이다.
위 사진 처럼 invalid 된 iat를 열어보면, 안에 kernel32.dll에 있는 findclose함수를 불로오는 걸 알 수 있다. 또한 findclose함수 이외에 어떠한 작동도 하지 않는 함수인것을 알 수 있다. 즉 redirection 함수임을 알 수 있다.
파일을 실행하면 뒤에처럼, 75D23840이라는 함수가 잘들어오는 것을 알수 있다.
분석해보면 다음과 같다. getprocAddress 함수라는 값은 함수의 주소값을 eax를 통해서 반환해준다. 그 후에 iat에 값을 넣는다.
그 후에 빨간 부분에서 함수에 값을 넣는것을 알 수 있다.
위사진은 iat의 구성이다. dll의 함수끼리 묶여있고 dll이 끝나면 8바이트의 00 00 00 00 나와서 구분해준다.