일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안티디버깅
- OSR
- linux thread
- custom packer
- 난독화
- android inject
- Linux custom packer
- Android
- tracing
- TLS
- Linux packer
- pthread
- linux debugging
- uftrace
- LLVM Obfuscator
- initial-exec
- tracerpid
- so inject
- pinpoint
- v8 optimizing
- thread local storage
- LLVM 난독화
- on-stack replacement
- v8 tracing
- anti debugging
- Injection
- Obfuscator
- LLVM
- on stack replacement
- apm
- Today
- Total
목록분류 전체보기 (139)
Why should I know this?
개발자들은 주로 주석을 통해 많은 정보를 코드에 덧붙여놓는데 자체 Trace 코드를 추가하면 장점이 있습니다. 1. 복기에 좋다. 2. 유지보수에 좋다. 3. 후임자에게 인수인계하기 좋다. 4. 개발자 외에 관여자에게 설명하기 쉽다. 제가 권하고 싶은 log와 trace의 차이 및 활용법은 다음과 같습니다. log는 개발 과정에서 세밀한 것들을 확인할 때 활용될 수 있는 메시지이고, trace는 개발 외의 과정에서 프로그램의 동작을 확인할 때 활용될 수 있는 메시지 입니다. 다음 코드는 제가 작성한 코드 일부입니다. /** * Function : emulator * ----------------------- * Determine if current device is an emulator * * retur..
Facebook의 Redex 라는 프로젝트 코드를 참조하기 위해 보는 중 난해했던 코드를 만났습니다. void LocalDce::dce(IRCode* code, bool normalize_new_instances, DexType* declaring_type) { cfg::ScopedCFG cfg(code); dce(*cfg, normalize_new_instances, declaring_type); } DCE 옵티마이징 과정 중에 이런 코드가 있던거죠. bliveness |= liveness.at(s->target()->id()); 이게 무슨 코드인가? 했는데 dataflow analysis 에서 live analysis(?) 를 DCE에서 같이하는걸로 보이네요. 이에 대해선 차후 포스팅 할 기회가 있을..
최근에 면접을 보러 다니는데 제목과 같은 내용을 질문받아서 흥미롭다는 생각을 했습니다. 이 글은 해당 내용에 대해 다루고자 합니다. 1. LLVM libcxx 에 구현되어 있는 new _LIBCPP_WEAK void * operator new(std::size_t size) _THROW_BAD_ALLOC { if (size == 0) size = 1; void* p; while ((p = ::malloc(size)) == nullptr) { // If malloc fails and there is a new_handler, // call it to try free up memory. std::new_handler nh = std::get_new_handler(); if (nh) nh(); else #if..
소개글. Shuffle이란 단어는 카드 게임에서 카드를 섞을 때 사용되는 단어이다. shuffle을 ‘섞다’라고 한다면 Shuffler는 ‘섞는자’ 라고 하면 될까? Shuffler는 Control Flow Integrity와 동일한 Code-reuse attack = ‘실행 흐름의 변조/위조’ 를 방지하는 기술로 ROP, JOP와 같은 exploit 기법의 방어 기제에 대한 연구이다. Shuffler 요약. CFI기술은 compile 시 혹은 binary rewriting으로 실행 흐름에 무결성을 확보하기 위한 코드를 주입한다. 이를 통해 Control Flow의 변경 시(Call, Jmp 등) 목적지가 정당한 지를 검증하는 방식을 일반적으로 취하게 된다. 단점은, 그로 인해 CPU의 Branch Pr..
Control Flow Integrity for COTS Binaries august 2013 USENIX best paper awarded. (https://www.usenix.org/node/174767) “Security thesis review는 보안 관련된 논문의 개인 review로 다수의견과 일치되지 않을 수도 있습니다.” 소개글. Control Flow Integrity(이하 CFI)는 많이 연구되는 분야로 Return Oriented Program(ROP), Jump Oriented Program(JOP)와 같은 Code reuse 공격 기법에 대한 방어 기법이다. 2013년 발표된 이 논문에서는 CFI를 real-world에 적용하기 위한 방안에 대한 연구 내용을 다루고 있다. 배경. 기..
mangling 이 필요해진 이유 define internal i32 @"int ArithmeticOpInt.add_int(int, int)"(i32 %v1, i32 %v2) { bb: %0 = alloca i32, align 4 store i32 %v1, ptr %0, align 4 %1 = load i32, ptr %0, align 4 %2 = alloca i32, align 4 store i32 %v2, ptr %2, align 4 %3 = load i32, ptr %2, align 4 %4 = add i32 %1, %3 ret i32 %4 } 위처럼 테스트용 DEX에 산술연산 테스트용 메소드를 작성해 LLVM IR 로 변경했다. 컴파일은 문제 없이 진행된다. 컴파일 한 뒤 objdump 로 심볼을..
모종의 이유로 Linux에서 AOSP를 빌드한 후 DEX를 실행하고 싶다면 이 글이 도움이 될 겁니다. 먼저 Linux에서 AOSP를 빌드할 때 사용하시는 컴퓨터에 맞는 아키텍처로 빌드하세요. 아직까지 AOSP는 x86에서만 빌드할 수 있으므로 x86_64를 선택하시면 될겁니다. dalvikvm을 실행하기 위한 스크립트 : #!/bin/sh # base directory, at top of source tree; replace with absolute path base=`pwd` # configure root dir of interesting stuff root=$base/out/target/product/generic_x86_64/system export ANDROID_ROOT=$root # confi..
Dex2IR 을 개발한지 좀 됐기 때문에 슬슬 구조적으로 생각해야 할 문제들이 보이기 시작해서 기억의 번복을 줄이기 위해 앞으로는 일지를 작성하려고 합니다. 이 글에서 고민하고 싶은건 Class.변환입니다. 바로 들어가죠. 이 고민의 발단이 된 instruction은 iget 입니다. iget-object p3, p0, Lkotlinx/coroutines/android/a;->_immediate:Lkotlinx/coroutines/android/a; iget instruction 을 적절히 처리하려면 이제는 class 구조의 도입이 불가피합니다. iget instruction은 Instance 로부터 field의 값을 읽는 명령어기 때문이죠. Class는 IR에서 어떻게 다뤄지는 확인해봅시다. #incl..
과거 Linux에서 사용할 수 있는 Thread Local Storage 종류와 차이를 다룬 적이 있다. https://die4taoam.tistory.com/37 Linux의 thread local storage 파헤치기 Thread Local Storage 파헤치기 0. 개요Thread Local Storage는 Multi-Thread 프로그램을 작성하는데 거의 필수로 사용되는 기능이다.Linux에서의 Thread Local Storage에 대하 자세히 다뤄보고자 한다. 이 글에서 다루 die4taoam.tistory.com Linux TLS 에 대한 설명은 링크에 있다. Linux TLS 를 공부하게 된 이유는 Nodejs Tracing 기능을 Uftrace에 넣기 위한 시도 중에 재귀호출이 확인되..
# docker pull (ubuntu:latest) docker pull ubuntu # docker run 공유폴더 work 지정 docker run -it --name=uu -d -v ~/work:/work ubuntu Docker Mac 환경 속도 개선방법 git/apt 등 disk io 속도가 너무 느린거 개선 https://sparkweb.co.kr/forum/Docker-Mac-%ED%99%98%EA%B2%BD-%EC%86%8D%EB%8F%84-%EA%B0%9C%EC%84%A0%EB%B0%A9%EB%B2%95 Docker Mac 환경 속도 개선방법 - 스파크웹 Mac OS 환경에서 Docker를 빠르게 개선하는 실험 기능이 Docker Mac Desktop 4.6 버전 부터 제공됩니다. vi..