일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- anti debugging
- uftrace
- custom packer
- android inject
- LLVM 난독화
- Linux packer
- on stack replacement
- OSR
- tracing
- Injection
- pthread
- Android
- Linux custom packer
- thread local storage
- pinpoint
- linux thread
- apm
- LLVM Obfuscator
- tracerpid
- TLS
- 난독화
- on-stack replacement
- Obfuscator
- v8 tracing
- 안티디버깅
- so inject
- LLVM
- v8 optimizing
- linux debugging
- initial-exec
Archives
- Today
- Total
Why should I know this?
LLVM Pass 작성 - 2018년 이후 본문
https://medium.com/@mshockwave/writing-llvm-pass-in-2018-part-i-531c700e85eb
LLVM에서 PASS를 작성하는 방식에 변화가 있었습니다. 자세한 내용은 위 링크를 참고하시면 됩니다.
extern "C" ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK
llvmGetPassPluginInfo() {
return {
LLVM_PLUGIN_API_VERSION, "LoopOptTutorial", "v0.1",
[](PassBuilder &PB) {
PB.registerPipelineParsingCallback(
[](StringRef Name, LoopPassManager &LPM,
ArrayRef<PassBuilder::PipelineElement>) {
if (Name == "loop-opt-tutorial") {
LPM.addPass(LoopOptTutorialPass());
return true;
}
return false;
});
}};
}
LoopPass를 작성하시면 위처럼 LoopPassManager로 바꾸시면 됩니다.
void registerPipelineParsingCallback (const std::function< bool(StringRef Name, FunctionPassManager &, ArrayRef< PipelineElement >)> &C)
void registerPipelineParsingCallback (const std::function< bool(StringRef Name, LoopPassManager &, ArrayRef< PipelineElement >)> &C)
void registerPipelineParsingCallback (const std::function< bool(StringRef Name, ModulePassManager &, ArrayRef< PipelineElement >)> &C)
참고하세요.
'LLVM-STUDY' 카테고리의 다른 글
byval (0) | 2023.11.07 |
---|---|
LLVM Study 관련 팁 (0) | 2023.10.25 |
Souper 분석 관련 키워드들 (0) | 2023.09.23 |
LLVM 에 기여하기 (feat.UFTRACE) (0) | 2023.09.15 |
LLVM 에 패치 보내기 튜토리얼 (0) | 2023.07.02 |
Comments