일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- initial-exec
- thread local storage
- Linux custom packer
- pinpoint
- v8 tracing
- linux debugging
- on-stack replacement
- Linux packer
- LLVM
- pthread
- 안티디버깅
- OSR
- tracerpid
- 난독화
- custom packer
- so inject
- linux thread
- LLVM Obfuscator
- Injection
- apm
- tracing
- Obfuscator
- anti debugging
- android inject
- v8 optimizing
- TLS
- on stack replacement
- Android
- uftrace
- LLVM 난독화
- Today
- Total
목록분류 전체보기 (139)
Why should I know this?
다음 두 논문 추천 (공교롭게도 제목이 같다.) Satisfiability Modulo Theories Satisfiability Modulo Theories: An Appetizer
#include "llvm/IR/Function.h" #include "llvm/Pass.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" using namespace llvm; namespace { class ControlFlowFlattening : public FunctionPass { public: static char ID; ControlFlowFlattening() : FunctionPass(ID) {} bool runOnFunction(Function &F) override { bool Modified = false; for (auto &BB : F) { if (BB.getTer..
* 이 글은 아직 검증되지 않은 내용을 담고 있습니다 * LLVM에서 IR을 단순화하는 방법 설명하기 LLVM에서 프로그램의 중간 표현(IR)을 단순화하려면 IR 코드를 보다 효율적이고 간소화된 형태로 변환하는 일련의 최적화 패스를 적용해야 합니다. 다음은 LLVM에서 IR을 단순화하는 일반적인 단계입니다: 최적화 수준을 선택합니다: LLVM은 코드를 최적화하는 데 걸리는 시간과 달성한 최적화 정도 간에 균형을 맞추는 여러 최적화 수준을 제공합니다. 예를 들어, -O1 최적화 수준은 비교적 빠른 중간 수준의 최적화를 수행하는 반면, -O3 수준은 훨씬 더 오래 걸릴 수 있는 높은 수준의 최적화를 수행합니다. 최적화 패스를 실행합니다: LLVM은 IR 코드에서 실행할 수 있는 대규모 최적화 패스 모음을 제..
https://github.com/llvm/llvm-project/commit/cbde0d9c7be1991751dc3eb5928294d2e00ef26a [IR] Add a dedicated FNeg IR Instruction · llvm/llvm-project@cbde0d9 The IEEE-754 Standard makes it clear that fneg(x) and fsub(-0.0, x) are two different operations. The former is a bitwise operation, while the latter is an arithmetic operation. This patch creates ... github.com https://github.com/llvm/llvm-pro..
* 이 글은 아직 검증되지 않은 내용을 답고 있습니다. * instcombine 은 -instcombine 옵션으로 실행되는 최적화 pass 입니다. https://llvm.org/docs/Passes.html#instcombine-combine-redundant-instructions LLVM’s Analysis and Transform Passes — LLVM 17.0.0git documentation This section describes the LLVM Analysis Passes. This pass, only available in opt, prints the control flow graph into a .dot graph. This graph can then be processed with..
https://github.com/ParkHanbum/mystudy/tree/master/llvm-study GitHub - ParkHanbum/mystudy Contribute to ParkHanbum/mystudy development by creating an account on GitHub. github.com 이 글의 실행결과는 위 리포지터리를 통해 직접 확인해보실 수 있습니다. LoopInstSimplify 는 -loop-simplify 옵션으로 실행되는 최적화 pass 입니다. https://llvm.org/docs/Passes.html#loop-simplify-canonicalize-natural-loops LLVM’s Analysis and Transform Passes — LLVM 17..
Uftrace에서 Nodejs Javascript function calling record 기능을 개발 진행했을때 기록. 기능을 추가할 일이 있을지 미지수지만 일단 기록은 해놈 https://github.com/namhyung/uftrace/issues/617 tricky way to trace the javascript running with v8. · Issue #617 · namhyung/uftrace As mentioned earlier, it is very useful to use the metadata provided by the tracing target. Tracing the execution of Javascript in v8 is possible with the -trace optio..
LLVM Optimizing 과정을 공부하면서 효율을 높히고 기록을 남기기 위해서 고민을 좀 해봤습니다. 예로 들려는 최적화는 LoopFlatten 입니다. llvm/lib/Transforms/Scalar/LoopFlatten.cpp 에 구현되어 있습니다. 첫 번째, 최적화 과정에서 활용되는 로직을 모은 실행파일 견본으로 모아보려고 합니다. LoopFlatten에서 큰 비중을 차지하는 static bool findLoopComponents 함수에는 다음과 같은 내용이 있습니다. static bool findLoopComponents( Loop *L, SmallPtrSetImpl &IterationInstructions, PHINode *&InductionPHI, Value *&TripCount, Bina..
Loop에서 Latch란 다음과 같이 정의되어 있다. https://llvm.org/docs/LoopTerminology.html LLVM Loop Terminology (and Canonical Forms) — LLVM 17.0.0git documentation The Loop Simplify Form is a canonical form that makes several analyses and transformations simpler and more effective. It is ensured by the LoopSimplify (-loop-simplify) pass and is automatically added by the pass managers when scheduling a LoopPass...