일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안티디버깅
- pinpoint
- linux thread
- uftrace
- initial-exec
- linux debugging
- on stack replacement
- tracerpid
- Injection
- custom packer
- v8 optimizing
- Obfuscator
- pthread
- android inject
- LLVM 난독화
- anti debugging
- 난독화
- apm
- LLVM
- Android
- OSR
- LLVM Obfuscator
- v8 tracing
- Linux custom packer
- thread local storage
- Linux packer
- so inject
- tracing
- TLS
- on-stack replacement
- Today
- Total
목록분류 전체보기 (139)
Why should I know this?
[LLVM] * llvm backend optimization 패치 분석 [LLVM CFI] * alive2 에 forward-cfi 관련 intrinsic 지원 추가하기 * llvm backward-cfi 관련 분석 [LLVM 난독화] * llvm IR 난독화 시 alive2 연동하여 난독화와 함께 코드 동등성 검사하는 기능 예제 작성
https://github.com/llvm/llvm-project/pull/70305 [InstSimplify] Fold (a != 0) ? abs(a) : 0 by Pierre-vh · Pull Request #70305 · llvm/llvm-project Solves #70204 github.com 문제가 발생하는 경우를 추적해 봅시다. # cat pp.c int f(int a) { if (a) return a > 0 ? a : -a; return 0; } # opt -O2 -S f.ll -print-after-all > log 2>&1 1회차 ; *** IR Dump After InstCombinePass on f *** ; Function Attrs: nounwind uwtable define d..
https://youtu.be/J5xExRGaIIY?si=nh8WkBmkIdjTMGGb OPT를 사용하여 IR을 생성할 때 다음과 같은 옵션을 지정하면, 1.원본 변수/함수 이름이 남고 2. 불필요한 메모리할당이 없어 보기 좋다. $ clang -O2 -Xclang -disable-llvm-passes -S -emit-llvm -fno-discard-value-names f.c -o f.ll $ opt -S -passes='mem2reg' f.ll -o f_opt.ll clang 을 사용할 때의 최적화 레벨이 남는 듯; int f(int a, int b) { int x = a; if (a > b) x += 20; else x += b; return x; } define dso_local i32 @f(i3..
https://youtu.be/bNV18Wy-J0U?si=n-hxGVmCqGD5LqYv You make some transformation It was very hard to update dominator tree because First you had to figure out what you information actually did And how it affected the dominator like you had to update or manipulate Nodes and glue them together to some other nodes to make a transformation Also on the dominator tree This turns out to be very difficult ..
https://die4taoam.tistory.com/101 LLVM 공부/기록/공유 고민 LLVM Optimizing 과정을 공부하면서 효율을 높히고 기록을 남기기 위해서 고민을 좀 해봤습니다. 예로 들려는 최적화는 LoopFlatten 입니다. llvm/lib/Transforms/Scalar/LoopFlatten.cpp 에 구현되어 있습니다. 첫 die4taoam.tistory.com 위처럼 세웠던 계획의 개선안. TEST(LoopInfoTest, HowToFindTripCount) { const char *ModuleStr = "target datalayout = \"e-m:o-i64:64-f80:128-n8:16:32:64-S128\"\n" "define void @foo(i32 %n, i1 %c..
https://medium.com/@mshockwave/writing-llvm-pass-in-2018-part-i-531c700e85eb Writing LLVM Pass in 2018 — Part I New Pass & Pass Manager in a Peek medium.com LLVM에서 PASS를 작성하는 방식에 변화가 있었습니다. 자세한 내용은 위 링크를 참고하시면 됩니다. extern "C" ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK llvmGetPassPluginInfo() { return { LLVM_PLUGIN_API_VERSION, "LoopOptTutorial", "v0.1", [](PassBuilder &PB) { PB.registerPi..
https://llvm.org/devmtg/2018-10/slides/Kruse-LoopTransforms.pdf https://www.youtube.com/watch?v=3pRhvQi7Z10&ab_channel=LLVM https://github.com/kitbarton/llvm-project/pull/1 LoopOptTutorial: Basic loop optimization template [STEP1] by etiotto · Pull Request #1 · kitbarton/llvm-project This is the first part of the Loop Optimization tutorial. The tutorial is divided into 5 parts/steps. In this fir..
1. Cadidate // breadth-first search void souper::findCands(Inst *Root, std::set &Guesses, bool WidthMustMatch, bool FilterVars,int Max) { std::set Visited; std::queue Q; Q.push(Root); while (!Q.empty()) { Inst *I = Q.front(); Q.pop(); if (Visited.insert(I).second) { for (auto Op : I->Ops) Q.push(Op); if (I->Available && I->K != Inst::Const && I->K != Inst::UntypedConst) { if (WidthMustMatch && I..
1. 배경지식 OPT PASS 몇 개의 코드를 보면서, OPT PASS라는 것은 '최적화 할 수 있는 CASE를 만들고, 해당 CASE에서 코드를 단축시키는 등의 최적화를 하는 것.' 이라는 정리를 했는데 설명하자면 다음과 같다. IR chunk는 각 opt pass 를 순회하며 최적화 케이스에 적합하면 변형되어 최적화 된 IR을 결과로 만들게 된다. [IR chunk] -> A case -> B case -> C case -> [Optimized IR chunk] 각 case 별로 조건을 검사하고 조건을 만족할때 IR을 변형하는 식으로 진행된다는 뜻 2. 적합한 케이스 탐색 grep 으로 TODO 목록을 검색해 그 중 만만해 보이는 경우를 찾아본다. (저의 경우 공부했던 경험과 또 만만해보이는 이유로 ..
* 이 글은 작성 중 입니다. 왜 작성 중인 글을 올려놓냐면 그래야 동기 부여가 되서 귀차니즘을 극복할 수 있기 때문입니다. * * 양해 바라고 양질의 글로 보답하겠습니다. * 0. Super Optimization 개요 peephole optimization 에 대한 정의는 wiki에서 확인 가능 https://en.wikipedia.org/wiki/Peephole_optimization Peephole optimization - Wikipedia From Wikipedia, the free encyclopedia Compiler optimization technique Peephole optimization is an optimization technique performed on a small se..