Hacking/Reversing: 1개의 글

[Themida] Unpacking for Static Analysis (KaKaoTalk)

Posted by push0ebp
2015. 9. 28. 02:54 Hacking/Reversing

평소에 더미다 패킹걸린 프로그램들은 동적으로만 분석했었는데 너무 번거로워서 정적 분석이 필요했다.

하지만 IDA는 쓰질 못하고 ㅜㅜ Dump 해도 API가 보이지 않아 무용지물이였다.


검색하면서 언패킹에 대해 대충 익힌후 Manual UnPacking을 해보았다. MUP라고 해야하나.. ?

처음이여서 많이 서투르다. 그래서 완벽하진 않다. 그저 정적 분석을 하기 위함이다.


1. Find OEP

2. Fix API Calls

3. Dump

4. Fix IAT

순으로 진행했다.


처음에는 언패킹 중에서 OEP찾는게 제일 어려운줄알았는데 의외로 OEP는 쉽게 찾았다.

하지만 2. Fix API Calls가 문제중에 제일 큰 문제였다.


타겟은 카카오톡 PC 이다.

그래프뷰는 잘나오고


API도 잘보인다


xref 도 잘된다.



hex ray decompile도 잘된다.


문제점.

- Not Runable 실행 할 수 없다. for Static Analysis 그저 정적 분석용이다.

-> 내가 타겟을 코딩해서 직접 Themida로 Packing한 후 다시 Unpacking을 해보았는데. 정상적으로 실행이 되었다.

            패킹된 프로그램의 코드에 따라 다른것 같다. 코드가 많을수록 Runable 확률은 떨어지고 가볍고 간단한 코드의 프로그램일 수록 Runable 하다.

- API가  Fix되지 않은곳이 종종 있다.

-> 리다이렉션이 Direct Call만 있는 것이 아니라 다른 영역으로 점프한후 다시 API로 점프하는 것들이 있다. 이런 코드들은 Fix되지 않았다.

(ex. call MSVCR120D.printf (o) call 04001234 -> call MSVCR120D.printf (x))

-> Fix 툴을 내가 직접 제작 하는게 편할 것 같다. (만만친 않겠지만 ㅎ)