전체 글

Reversing Advanced

IDA "sp-analysis failed" 에러 해결 방법

함수를 디컴파일하는 과정에서 JUMPOUT()이 뜨면서 디컴파일이 정상적으로 안되는 경우가 있습니다. 이번 포스트는 이런 에러를 해결하고 함수를 정상적으로 디컴파일하는 방법을 소개합니다. asm 코드를 보면 "endp ; sp-analysis failed"라는 오류가 발생하면서 디컴파일이 수행되지않습니다. 해당 오류는 스택 포인터가 잘못 설정된 경우에 발생하는데요. 따라서 스택 포인터를 정상적인 값으로 다시 설정하면 오류를 해결할 수 있습니다. 다만, 필자는 스택 포인터를 바꾸는 방법으로 오류를 해결할 수 없었습니다. 여러가지 방법을 시도했지만, 전부 실패하고 함수를 재정의하는 방법만 성공했습니다. 따라서 함수를 재정의해서 정상적으로 디컴파일하는 방법을 공유하겠습니다. 먼저, 오류가 발생한 "endp ;..

Reversing Advanced

IDA를 이용한 바이너리 패치

IDA로 바이너리 코드를 패치하는 방법에 대해서 소개하겠습니다. 저는 target이라는 프로그램을 IDA로 패치해서 원하는 결과를 출력하는 것을 목적으로 진행할 것입니다. 실습하고 싶으신 분들은 다음 설명에서 C 코드 제공되니 직접 컴파일해서 따라해보시면 좋을 것 같습니다. ○ target.c#include #include int compare(const void *a, const void *b) { int num1 = *(int *)a; int num2 = *(int *)b; if (num1 num2) return 1; return 0;}void solution(int arr[], int arr_size, int num[], int num_size) { int N = arr..

System Hacking Advanced

Pwnable러를 위한 PwnDocker

안녕하세요. 오랜만에 게시글로 돌아온 "keyme"입니다. 요즘 pwnable에 빠져서 열심히 학습하고 있는데요. pwnable을 공부하면서 느낀점은 ubuntu 환경을 구축해서 동적디버깅하는 것이 필수라는 것입니다. 따라서 ubuntu 버전 별로 환경을 구축하는 방법을 고민했고 Docker로 구축하는 것이 가장 간편하다는 것을 깨달았습니다. 이번 글은 pwnable을 공부하시는 분들을 위해 ubuntu 버전 별로 Dockerfile을 공유하고자 작성했습니다. 다른 분들의 글도 참고했으나, 과거에 쓰신 것들이라 에러가 발생하는 경우도 있었고 개인적으로 추가하고 싶은 툴들도 있어서 추가/수정해서 신규 버전으로 업데이트 했습니다. 추가로 docker 명령어로 build, start & attach, cp 하..

keyme
keyme - Security Study