본문 바로가기

reversing

(86)
GDB PIE 디버깅하기 처음에 인자를 다 넣으면서 하기 힘들어서찾아보니 좋은자료 있어서 저장gdb 에서 b *0x0하고 r arg < input 하고,브레이크 포인터 삭제하고 디버깅. 퍼옴 : http://revers3r.tistory.com/368
python gdb 백업 d = subprocess.Popen("gdb -ex 'py rax = " + str(i) + "' -x ./gg.py ", shell=True, stdout=subprocess.PIPE).stdout.read().strip() #gg.py 파일import gdb class MyBreakpoint(gdb.Breakpoint): def stop (self): return True gdb.execute('file ./OS.BIN')gdb.execute("set environment LD_PRELOAD /home/sudhakar/tools/preeny/x86_64-linux-gnu/desleep.so")MyBreakpoint("*0x400a62")gdb.execute("run")gdb.execute('set ..
gdbserver script 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#!/usr/bin/python import subprocessimport reimport sysimport os#gdbserver --attach :55555 1299 def execute(cmd) : fd = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) return fd def get_pid(proc): fd = execute("/bin/ps -x") pslist= fd.stdout.rea..
Why use system call? 시스템 콜을 사용하는 이유구글 번역 : https://www.quora.com/What-are-the-main-purposes-of-system-calls시스템 호출은 사용자 프로그램 (사용자 모드에서 실행)이 운영 체제에서 일부 서비스를 요청하는 방법입니다. 즉, 시스템 호출을 통해 사용자 프로그램이 사용자 프로그램을 대신하여 OS에 작업을 요청할 수 있습니다. 예를 들어, 저장 장치와의 I / O를 필요로하는 파일 읽기 및 쓰기. 이러한 시스템 호출 작업은 간단한 라이브러리 호출 / API (libc의 read (), write (), open () 등)의 형태로 일반 사용자에게 공개됩니다. 이러한 작업의 핵심은 전환 후 OS 커널 코드에 의해 실행됩니다 유저로부터 커널에의 모드 (TRAP 명령). ..
C++ 리버싱 연습 [2] -이론 C++ 분석 정리 x86에서 c++ 분석과 관련된 내용을 정리 해놓는다. 사전 지식thiscall 호출 규약 ECX에 인스턴스 주소를 기억한 후 함수를 호출하는 방법 바인딩(bindding) 정적바인딩 : 컴파일 시점에 호출될 함수를 결정하는 함수 동적바인딩 : 함수 호출이 실제로 일어나는 시점에 함수를 결정하는 방법 가상함수(virtual function) 상속을 받은 클래스에서 재정의가 가능한 멤버 함수 가상함수는 동적 바인딩을 사용하므로, 가상 함수 테이블에서 실제 함수 주소를 찾아야함 분석방법1. 클래스 찾기1-1. ecx를 이용한 함수 호출 등 발생 여부를 확인한다.1-2. 생성자와 소멸자지역 객체지역 변수로서 객체를 선언하고 사용하는 것을 말한다.생성자 - 지역 객체가 선언하는 시점에서 호출소..
SMT - z3[sudoku] 보호되어 있는 글입니다.
Android JNI 보호되어 있는 글입니다.
[Pydbg] API 함수 후킹 템플릿 보호되어 있는 글입니다.