일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- custom packer
- 안티디버깅
- Injection
- TLS
- LLVM Obfuscator
- Linux custom packer
- so inject
- tracing
- on-stack replacement
- Android
- OSR
- initial-exec
- v8 optimizing
- uftrace
- thread local storage
- tracerpid
- linux thread
- Linux packer
- on stack replacement
- apm
- LLVM
- anti debugging
- pthread
- 난독화
- linux debugging
- android inject
- pinpoint
- Obfuscator
- v8 tracing
- LLVM 난독화
- Today
- Total
목록LLVM-STUDY/TODO (19)
Why should I know this?
1. 정의 2. 주요 기능 3. 활용 예제 1. ConstantRange 는 ConstantRange.h 에 선언되어 있다. /// This class represents a range of values. 생성자 셋 ConstantRange::ConstantRange(uint32_t BitWidth, bool Full) : Lower(Full ? APInt::getMaxValue(BitWidth) : APInt::getMinValue(BitWidth)), Upper(Lower) {} ConstantRange::ConstantRange(APInt V) : Lower(std::move(V)), Upper(Lower + 1) {} ConstantRange::ConstantRange(APInt L, APInt ..
(gdb) bt #0 0x00005555562eebc6 in llvm::BatchAAResults::getModRefInfo (this=0x7fffffffb980, I=0x55555ceb46a0, OptLoc=std::optional [no contained value]) at /home/m/llvm-project/llvm/include/llvm/Analysis/AliasAnalysis.h:641 #1 0x000055555657a3de in llvm::MemorySSA::createNewAccess (this=0x55555ce56230, I=0x55555ceb46a0, AAP=0x7fffffffb980, Template=0x0) at /home/m/llvm-project/llvm/lib/Analysis/..
https://llvm.org/devmtg/2016-11/Slides/Finkel-IntrinsicsMetadataAttributes.pdf
https://llvm.org/docs/MemorySSA.html MemorySSA — LLVM 18.0.0git documentation MemorySSA is an analysis that can be built for any arbitrary function. When it’s built, it does a pass over the function’s IR in order to build up its mapping of MemoryAccesses. You can then query MemorySSA for things like the dominance relation betwee llvm.org
[LLVM] * llvm backend optimization 패치 분석 [LLVM CFI] * alive2 에 forward-cfi 관련 intrinsic 지원 추가하기 * llvm backward-cfi 관련 분석 [LLVM 난독화] * llvm IR 난독화 시 alive2 연동하여 난독화와 함께 코드 동등성 검사하는 기능 예제 작성
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..
Juneyoung_Lee_PhD.pdf (utl.pt) 위는 링크 왜인지 링크가 죽어있어서 다운받아놓은 파일도 첨부합니다. 매우 찾던 내용. 단지, 굳이 SMT?? 에 대한 구체적인 내용이 서술되지 않은 점이 아쉽다.
1. Undef – Explicit value in the IR – Acts like a free-floaLng hardware register • Takes all possible bit pakerns at the specified width • Can take a different value every Lme it is used – Comes from uniniLalized variables – Further reading • We want this opLmizaLon: %add = add nsw i32 %a, %b %cmp = icmp sgt i32 %add, %a => %cmp = icmp sgt i32 %b, 0 • But undef doesn’t let us do it: %add = add n..
Symbolic Execution은 대부분의 낯선 것들이 그렇듯 관념적으로 이해하게 된다. 이 글에서는 Symbolic Execution 을 만든 사람들이 어떤 고민을 했는지를 생각해보는 과정을 통해 그리고 몇 가지 예시를 통해 수학에서는 함수를 f 로 표기하고 함수=function이라고 부른다. 공교롭게도 이 함수는 프로그래밍에서 함수=function이라고 부르는 것과 일치한다 . f(x) = x + 4 인 함수를 C로 작성한다면? int f(int x) { return x+4; } 너무 쉬워서 더 생각할 필요도 없는것 같지만 Symbolic Execution은 우리가 간과하는 것을 고민한다. 대표적인게, "위에서 작성한 코드를 어떻게 테스트 할 수 있을까?"에 대한 고민이 그것이다. 내 생각에 고민은..