일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TLS
- on-stack replacement
- 안티디버깅
- v8 tracing
- pthread
- pinpoint
- on stack replacement
- LLVM
- LLVM 난독화
- custom packer
- tracerpid
- Linux packer
- OSR
- LLVM Obfuscator
- v8 optimizing
- 난독화
- linux debugging
- apm
- android inject
- Obfuscator
- anti debugging
- initial-exec
- Linux custom packer
- tracing
- Android
- Injection
- uftrace
- linux thread
- so inject
- thread local storage
- Today
- Total
목록LLVM-STUDY (65)
Why should I know this?
https://github.com/llvm/llvm-project/commit/06408451bf12d4baed1fb1312d8af6e6bbb6a797 Revert "[SCCP] Use SimplifyBinOp for non-integer constant/expressions… · llvm/llvm-project@0640845… & overdef." This reverts commit 1a02aaeaa4f8675490da38ee8cb0d4a6d39815dd. Crashes on the following test case: $ cat crash.ll source_filename = "__compute_module" target datal...github.com https://github.com/llvm/l..
https://archive.fosdem.org/2019/schedule/event/llvm_tablegen/attachments/slides/3304/export/events/attachments/llvm_tablegen/slides/3304/tablegen.pdf
Store IR 원형store [volatile] , ptr [, align ][, !nontemporal !][, !invariant.group !]; yields voidstore atomic [volatile] , ptr [syncscope("")] , align [, !invariant.group !] ; yields void! = !{ i32 1 }! = !{}STRroX, STRroWSTR(register) 3130292827262524232221201918171615141312111098765432101x111000001RmoptionS10RnRtsize opc STRroX, STRroW 예시str x0, [x9, x8, lsl #3]storeopTy regtype:$..
https://github.com/llvm/llvm-project/pull/91762 (기억을 보존하기 위한) 패치 내용 정리.패치 동기LLVM에서는 AND/OR/XOR 연산을 BitwiseLogic 이라고 부른다. 해당 로직들은 특정 상황에서 최적화 될 수 있다.다음의 경우를 보자.define i32 @src_no_trans_select_or_eq0_and_or(i32 %x, i32 %y) {; CHECK-LABEL: @src_no_trans_select_or_eq0_and_or(; CHECK-NEXT: [[OR:%.*]] = or i32 [[X:%.*]], [[Y:%.*]]; CHECK-NEXT: ret i32 [[OR]]; %or = or i32 %x, %y %or0 = icmp eq..
https://die4taoam.tistory.com/147 computeKnownBits & KnownBits 관련 예제computeKnownBits https://llvm.org/doxygen/ValueTracking_8cpp.html#a903bd19e9d31beff55b22fe86111639e Determine which bits of V are known to be either zero or one and return them. void computeKnownBits (const Value *V, KnownBits &Known, const DataLayout &DL,die4taoam.tistory.com computeKnownBitsㄴ computeKnownBitsFromContext ㄴ ..
다음 코드를 통해 computeKnownBitsFromCmp 에서 KnownBit를 추산하는 방식을 알아보자. unsigned BitWidth = Known.getBitWidth(); auto m_V = m_CombineOr(m_Specific(V), m_PtrToIntSameSize(Q.DL, m_Specific(V))); Value *Y; const APInt *Mask, *C; uint64_t ShAmt; switch (Pred) { case ICmpInst::ICMP_EQ: // assume(V = C) if (match(LHS, m_V) && match(RHS, m_APInt(C))) { Known = Known.unionWith(KnownBits::ma..
computeKnownBitsFromCondㄴ computeKnownBitsFromICmpCond void llvm::computeKnownBitsFromICmpCond(const Value *V, ICmpInst *Cmp, KnownBits &Known, const SimplifyQuery &SQ, bool Invert) { ICmpInst::Predicate Pred = Invert ? Cmp->getInversePredicate() : Cmp->getPredicate(); Value *LHS = Cmp->getOperand(0); Value *..
(TBD)
UBFM Syntax UBFM Wd, Wn, #, # ; 32-bit general registers UBFM Xd, Xn, #, # ; 64-bit general registers Usage Unsigned Bitfield Move copies any number of low-order bits from a source register into the same number of adjacent bits at any position in the destination register, with zeros in the upper and lower bits. Important! UBFM is an instruction that copies by specifying a memory range and can be..
Load 의 IR 원형 ex) %0 = load i32, ptr %arrayidx = load [volatile] , ptr [, align ][, !nontemporal !][, !invariant.load !][, !invariant.group !][, !nonnull !][, !dereferenceable !][, !dereferenceable_or_null !][, !align !][, !noundef !] LDR(immediate)3130292827262524232221201918171615141312111098765432101x111000010imm901RnRtsize opc LDRXui (immediate) MIR 예시renameable $x9 = LDRXui renamable $x..