2012년 12월 15일
맥콜 이 아닌 appcall of IDA PRO
IDA 5.6 버전에서 부터 지원되는 appcall은 디버깅 중에 특정 함수를 호출할 수 있는 기능을 제공한다.
예전부터 이런 기능이 있었으면 좋겠다 생각했는데 ida에서 이 기능을 추가시켰다.
몇몇 환경에서 유용하게 사용될 수 있다.
1. 내가 원하는 인자 값으로 함수를 실행시켜 결과 값을 확인하고자 할때
-> 함수 인자 값을 정의해주는 것도 중요하지만 함수 본문에 전역 변수가 데이터 변수가 있다면
해당 변수를 실제 실행 환경에 맞게 셋팅해줘야 appcall 을 통한 함수 실행이 정상적으로 동작 할 것이다
2. 내가 원하는 함수 리턴 값을 가지는 인자 값을 확인하고자 할때
-> 원하는 리턴 값이 나올때 까지 인자 값을 랜덤하게 생성. (복호화, 디코딩 시에 유용)
3. 특정 영역에 인코딩된 악성코드를 디코딩 할때
-> 특정 영역에 인코딩되어 저장된 악성코드를 디코딩 함수를 서치하여 APPCALL로 호출하여
디코딩 시킨 후 메모리 덤프로 복원
이거 외의 Fuzzing at function level 등의 많은 경우에 활용될 수 있지만, 실제 운영 환경의 Context를
보장해줘야 함수가 정상적으로 실행되므로 제한적으로 사용되는건 어쩔 수 없을 꺼 같다
최근 발표된 IDA Pro 6.4 의 새로운 기능에서 64비트 바이너리를 APPCALL에서 지원한다고 나와있다.
* other debugging improvement
- added support for SystemV AMD64 ABI: now you can use Appcall when debugging x64 Linux binaries
예전부터 이런 기능이 있었으면 좋겠다 생각했는데 ida에서 이 기능을 추가시켰다.
몇몇 환경에서 유용하게 사용될 수 있다.
1. 내가 원하는 인자 값으로 함수를 실행시켜 결과 값을 확인하고자 할때
-> 함수 인자 값을 정의해주는 것도 중요하지만 함수 본문에 전역 변수가 데이터 변수가 있다면
해당 변수를 실제 실행 환경에 맞게 셋팅해줘야 appcall 을 통한 함수 실행이 정상적으로 동작 할 것이다
2. 내가 원하는 함수 리턴 값을 가지는 인자 값을 확인하고자 할때
-> 원하는 리턴 값이 나올때 까지 인자 값을 랜덤하게 생성. (복호화, 디코딩 시에 유용)
3. 특정 영역에 인코딩된 악성코드를 디코딩 할때
-> 특정 영역에 인코딩되어 저장된 악성코드를 디코딩 함수를 서치하여 APPCALL로 호출하여
디코딩 시킨 후 메모리 덤프로 복원
이거 외의 Fuzzing at function level 등의 많은 경우에 활용될 수 있지만, 실제 운영 환경의 Context를
보장해줘야 함수가 정상적으로 실행되므로 제한적으로 사용되는건 어쩔 수 없을 꺼 같다
최근 발표된 IDA Pro 6.4 의 새로운 기능에서 64비트 바이너리를 APPCALL에서 지원한다고 나와있다.
* other debugging improvement
- added support for SystemV AMD64 ABI: now you can use Appcall when debugging x64 Linux binaries
# by | 2012/12/15 20:43 | 트랙백
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]