목록분류 전체보기 (10)
D1N0's hacking blog
vscode remote ssh로 서버에 연결에서 typescript로 코딩하고 있는데 자꾸 연결이 끊겼다 서버 접속도 안 되길래 서버 CPU 사용량을 보니까 100%를 훌쩍 넘어가 있었다 node 프로세스들이 CPU를 잔뜩 잡아먹길래 찾아봤더니 역시 이미 누가 해결방법을 올려놨다 vscode extensions에서 @builtin typescript를 검색하고 TypeScript and JavaScript Language Features를 disable시키면 된다 이거 말고도 제시된 방법이 좀 있었는데 내가 고쳐졌던건 이거 하나였다 물론 typescript 부가 기능(import할 때 파일 목록을 보여준다던지 등)을 못 쓰는 임시방편의 방법이니 정 안 고쳐지면 사용하도록 하자 참고 https://git..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
1. pushad, popad x96dbg로 패킹된 파일을 열어 사용자 코드로 실행을 하면 pushad 명령을 찾을 수 있다 프로그램 실행을 위한 언패킹 전에 레지스터 상태를 스택에 저장하고, 언패킹이 끝날때 popad 명령으로 레지스터를 복구한다 pushad를 실행하고 esp를 덤프해서 따라가면 레지스터들이 보인다 저 주소에 하드웨어 중단점을 걸어준다 그리고 F9로 실행하면 언패킹이 끝난 주소에서 멈춘다 위에서 popad 명령이 실행된 것을 확인할 수 있다 jmp 08.1012475가 보이는데, 이 01012475가 이 프로그램의 OEP이다 2. Exeinfo PE 일단 upx로 파일을 언패킹해준다 그리고 Exeinfo로 보면 EP를 바로 알 수 있다 PE버튼을 눌러 헤더 정보를 보면 Image bas..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
이 글에서는 64bit 환경에서의 함수 호출 과정을 알아보겠다 나는 함수 호출 규약을 64bit에선 fastcall만 쓰는 줄 알았는데, 찾아보니 vectorcall을 사용한다, 기본 64bit 호출 규약이 있다,... 말이 다 달라서 용어는 모르겠지만 나는 그냥 gcc 기본옵션으로 컴파일된 바이너리를 살펴보겠다 어차피 일반적으로 그냥 컴파일 된 바이너리를 제일 자주 볼 테니 말이다 물론 내가 기본옵션으로 컴파일 한 파일이 일반적인 방식으로 컴파일된 파일이 아닐 수도 있다 아무튼 나중에 자세히 알게된다면 이 부분에 대해선 다시 정리하겠다 이 글은 전 글과 연결되어 있으니 아직 보지 않았다면 이전 글을 보고 오는 것을 추천한다 C언어 함수 호출과정 - cdecl 포너블에서 너무 중요하고 기초적인 내용이지만..
포너블에서 너무 중요하고 기초적인 내용이지만 아직도 헷갈려서 정리한다 이 글은 독자가 기초적인 C언어와 어셈블리어를 알고 있는 상태라고 가정한다 모든 코드는 WSL Ubuntu 20.04 LTS에서 -m32 -no-pie 옵션을 사용해서 gcc로 컴파일 되었고, 실행 파일들은 글 하단에 올려놓았다 cdecl은 수많은 32bit 프로그램에서 사용되는 방식이다 함수를 호출하고, 호출자가 스택을 정리하는 호출자 정리 방식의 일종이다 #include int foo(int a, int b, int c) { return a+b+c; } int main() { int a = foo(1, 2, 3); return 0; } 위와 같은 C 코드를 짜고 32bit 컴파일을 했다 gef gdb로 까 보면 main 함수는 이렇..
Z3 solver z3 solver는 특정 값들을 찾아주는 SMT solver 모듈이라고 한다 쉽게 말하면 여러 수식을 풀어주는 모듈이라고 생각하면 된다 리버싱 할 때도 많이 필요하고 그게 아니더라도 유용히 쓸 수 있을 거 같아서 정리하기로 했다 설치 일단 Z3 solver 모듈의 링크는 이곳이다 github.com/Z3Prover/z3 들어가면 다양한 언어에서의 설치 과정이 자세히 나와있지만 나는 파이썬을 쓸 거라서 pip로 간단히 설치가 가능하다 pip install z3-solver or pip3 install z3-solver 기본 문법 사용 전 모듈 불러오기 from z3 import * 정수형 미지수 선언 x = Int('x') y = Int('y') 실수형 미지수 선언 x = Real('x'..