일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- v8 optimizing
- Injection
- on-stack replacement
- so inject
- linux debugging
- on stack replacement
- Obfuscator
- pinpoint
- tracerpid
- 안티디버깅
- LLVM 난독화
- v8 tracing
- TLS
- linux thread
- thread local storage
- custom packer
- android inject
- uftrace
- Android
- pthread
- LLVM
- Linux packer
- initial-exec
- apm
- tracing
- LLVM Obfuscator
- Linux custom packer
- 난독화
- anti debugging
- OSR
- Today
- Total
목록Technic (14)
Why should I know this?
https://developer.arm.com/documentation/ddi0595/2020-12/AArch64-Instructions/DC-ZVA--Data-Cache-Zero-by-VA Documentation – Arm Developer developer.arm.com DC ZVA, Data Cache Zero by VADC ZVA는 지정된 가상 주소를 캐쉬에 채우지 않는 동작 수행을 지정하는 특수 Instruction이다."DC ZVA"로 구글에 검색하면 숱한 관련 내용이 나오니 더 기술하하는 것은 생략하고 다음 일부를 발췌해왔다."DC ZVA"는 효과적이며 메모리 시스템을 쓰기 스트리밍 모드로 전환하여 멤셋과 같은 시나리오에서 L1 캐시를 라인 채우지 않도록 합니다. 작년에 .NET은 프레임 ..
* 상황 1. fix-issue-001 이란 이름으로 만든 Branch에서 작업 후 Github에서 Pull Request 를 보낸 후 2. Remote의 fix-issue-001 Branch를 삭제하고 3. 새로 만든 동일한 이름의 fix-issue-001 Branch로 force-push 한 경우 * 문제 위와 같이 Branch를 새로 만든 후 push 한 경우, 이미 보낸 Pull Request로 갱신이 되지 않는다. 물론 PR을 새로 올리는 것도 방법이지만, 이미 보내놓은 PR에서 의견 소통이 이뤄진 경우 이 흔적을 지우는건 좋지 않다. * 해결책 먼저 현재의 브랜치 fix-issue-001 를 이름을 변경한다. 대충 fix-issue-001___ 로 변경했다고 치자. 과거의 브랜치를 복구한다 g..
https://docs.github.com/ko/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent 새 SSH 키 생성 및 ssh-agent에 추가 - GitHub Docs SSH(보안 셸 프로토콜)를 사용하여 GitHub.com의 리포지토리에서 데이터를 액세스하고 쓸 수 있습니다. SSH를 통해 연결할 때 로컬 머신에서 프라이빗 키 파일을 사용하여 인증합니다. 자세한 내용은 docs.github.com
개발자들은 주로 주석을 통해 많은 정보를 코드에 덧붙여놓는데 자체 Trace 코드를 추가하면 장점이 있습니다. 1. 복기에 좋다. 2. 유지보수에 좋다. 3. 후임자에게 인수인계하기 좋다. 4. 개발자 외에 관여자에게 설명하기 쉽다. 제가 권하고 싶은 log와 trace의 차이 및 활용법은 다음과 같습니다. log는 개발 과정에서 세밀한 것들을 확인할 때 활용될 수 있는 메시지이고, trace는 개발 외의 과정에서 프로그램의 동작을 확인할 때 활용될 수 있는 메시지 입니다. 다음 코드는 제가 작성한 코드 일부입니다. /** * Function : emulator * ----------------------- * Determine if current device is an emulator * * retur..
* DroidKnights 2021 에서 발표했던 내용 일부를 발췌한 글 입니다.* Native 코드를 개발할 때, 특히 Android 와 같이 개발사/기기사 간 특수성이 존재하는 개발환경에서는 시스템에 밀접한 작업을 하는 보안 모듈 특성 때문에 충분한 테스트가 늘 아쉽기 마련이다. 혹시 모를 경우를 대비해 Crash를 Handling함으로서 적어도 Crash 때문에 배포날의 긴장도를 낮춰보도록 하자. 예제 코드 : https://github.com/ParkHanbum/mystudy/tree/master/signal_handler 시나리오는 다음과 같다. 1. 갱신된 함수를 실행하기 전에 signal 들에 대한 handling 추가. 2. signal 이 발생했을 경우를 위한 복원점 지정 3. signa..
Hashmap을 uftrace에서 활용하기 위해 Android 구 버전에서 hashmap 구현을 복붙하는 과정에서, https://github.com/ParkHanbum/android_c_hashmap GitHub - ParkHanbum/android_c_hashmap: C collection hashmap from android (4.3) C collection hashmap from android (4.3). Contribute to ParkHanbum/android_c_hashmap development by creating an account on GitHub. github.com Hashmap의 구현에 대해 조금 공부를 해보게 됐다. Hashmap에 대해서는 이 블로그를 참고하면 좋을 것 같다...
설명 : C/C++ 코드의 초기 버전을 찾아 히스토리를 보는게 가끔은 유용할 때가 있다. 위처럼 초기 버전을 찾아가는 C/C++ 코드에서는 소스코드 마지막 라인을 blame해서 쉽게 초기 버전을 찾을 수 있는 경우가 많다. 예2) m@M:~/llvm-project/llvm/lib/Transforms/Scalar$ wc -l LoopInstSimplify.cpp 247 LoopInstSimplify.cpp m@M:~/llvm-project/llvm/lib/Transforms/Scalar$ git blame -L247,+1 LoopInstSimplify.cpp e6c30fdda7991 (Chandler Carruth 2018-05-25 01:32:36 +0000 247) } m@M:~/llvm-project..
Droid knights에서 발표한 "Android Native Module 안정적으로 개발하기" 내용 중에 내가 만든 TRY-CATCH 매크로를 공유했었는데 대충 이런식이었다. void do_signal_handling() { int sig = 0; int watch_signals = sigill | sigtrap | sigabrt | sigbus | sigsegv; fprintf(stderr, "fn size : %lx\n", get_func_size((unsigned long)&do_segv)); TRY(sig, watch_signals, do_segv1) { do_segv1(); } CATCH (sig, sigsegv, e) { fprintf(stderr, "inside catch!!\n"); f..
오픈소스에서 원하는 코드를 쉽게 찾는 방법을 알아보겠습니다. 이번에 찾고자 하는 코드는 gdb에서 특정 함수를 호출할 수 있게 해주는 로직! 예를 들면, gdb에서는 다음과 같은 명령을 수행할 수 있습니다 (gdb) call (void *)dlopen("/home/m/signal-checker.so", 2) I am 18500 Hello, I'm loaded!! $1 = (void *) 0x55555555a2d0 위의 명령처럼 target process context에서 특정 함수의 호출이 가능합니다. 예제에서는 dlopen을 통해 so를 로드했고, 그 결과 so의 init에서 출력해주는 메시지를 볼 수 있습니다. 1. gdb 를 tracing 가능한 형태로 컴파일한다! m@Hanbum:~/binutil..