일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- android inject
- Linux packer
- LLVM 난독화
- linux thread
- custom packer
- LLVM
- 난독화
- v8 optimizing
- tracerpid
- v8 tracing
- Injection
- OSR
- apm
- TLS
- LLVM Obfuscator
- uftrace
- Android
- on stack replacement
- 안티디버깅
- so inject
- Linux custom packer
- initial-exec
- on-stack replacement
- thread local storage
- Obfuscator
- pthread
- linux debugging
- tracing
- anti debugging
- pinpoint
- Today
- Total
목록Technic (14)
Why should I know this?
C/C++ 에서 특수한 목적으로 함수의 크기를 구하려고 한다면 셋 중 하나의 결과가 나온다. 1. 컴파일 된 binary를 nm 등을 사용해 symbol 주소와 크기를 구한다. 이런 방식으로 함수의 크기를 사용하려면 컴파일 한 후 binary에 writing해주는 과정이 필요하다. 2. 선언된 함수 뒤에 크기 계산용 더미 함수를 추가하여 주소를 계산한다. 아래와 같은 방식이다. static void fn_need_to_know_size() { return 0; } static void fn_to_mark_end() { return 0; } unsigned long size = (unsigned long)&fn_need_to_know_size - (unsigned long)&fn_to_mark_end; 하..
G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log ./test_resolve `which gcc`
"Hello World" in C "Hello World" in C++"Hello World" in Go "Hello World" in Rust $ cat C_hello.c#include int main(){ printf("Hello world\n");} $ cat Cplus_hello.cpp#include using namespace std;int main(){ cout
regs.rip = addr;[injected address] 0x400fb0 instead of expected SIGTRAP, target stopped with signal 11: Segmentation fault (gdb) x/10i 0x400fae [0x7f602fd0173c] [130037] │=> 0x400fae: add %al,(%rax) [0x7f602fd0173c] [150037] │ 0x400fb0: push %rsi [0x7f602fd0173c] [110037] │ 0x400fb1: push %rdx [0x7f602fd0173c] [140037] │ 0x400fb2: push %r9 [0x7f602fd0173c] [160038] │ 0x400fb4: mov %rdi,%r9 [0x7f..