eshard / obfuscator-llvm Goto Github PK
View Code? Open in Web Editor NEWLicense: Other
License: Other
enviroment, use the https://github.com/eshard/obfuscator-llvm/tree/fix-build-llvm-15-16 version
clang --version
clang version 15.0.5
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: D:/msys2/clang64/bin
Failed in last link stager.
[8/8] Linking CXX shared library libLLVMObfuscator.dll
FAILED: libLLVMObfuscator.dll libLLVMObfuscator.dll.a
cmd.exe /C "cd . && D:\msys2\clang64\bin\c++.exe -Wall -Wextra -Wno-unused-parameter -shared -o libLLVMObfuscator.dll -Wl,--out-implib,libLLVMObfuscator.dll.a -Wl,--major-image-version,0,--minor-image-version,0 CMakeFiles/LLVMObfuscator.dir/Plugin.cpp.obj CMakeFiles/LLVMObfuscator.dir/utils/Utils.cpp.obj CMakeFiles/LLVMObfuscator.dir/utils/CryptoUtils.cpp.obj CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj CMakeFiles/LLVMObfuscator.dir/flattening/Flattening.cpp.obj CMakeFiles/LLVMObfuscator.dir/split/SplitBasicBlocks.cpp.obj CMakeFiles/LLVMObfuscator.dir/substitution/Substitution.cpp.obj D:/msys2/clang64/lib/libLLVMCore.a D:/msys2/clang64/lib/libLLVMSupport.a D:/msys2/clang64/lib/libLLVMBinaryFormat.a D:/msys2/clang64/lib/libLLVMRemarks.a D:/msys2/clang64/lib/libLLVMBitstreamReader.a D:/msys2/clang64/lib/libLLVMSupport.a -lpsapi -lshell32 -lole32 -luuid -ladvapi32 D:/msys2/clang64/lib/libz.dll.a D:/msys2/clang64/lib/libzstd.dll.a D:/msys2/clang64/lib/libLLVMDemangle.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
ld.lld: error: undefined symbol: llvm::DemoteRegToStack(llvm::Instruction&, bool, llvm::Instruction*)
>>> referenced by CMakeFiles/LLVMObfuscator.dir/utils/Utils.cpp.obj:(llvm::fixStack(llvm::Function*))
ld.lld: error: undefined symbol: llvm::DemotePHIToStack(llvm::PHINode*, llvm::Instruction*)
>>> referenced by CMakeFiles/LLVMObfuscator.dir/utils/Utils.cpp.obj:(llvm::fixStack(llvm::Function*))
ld.lld: error: undefined symbol: llvm::Function::viewCFG() const
>>> referenced by CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj:(llvm::BogusControlFlow::bogus(llvm::Function&))
>>> referenced by CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj:(llvm::BogusControlFlow::bogus(llvm::Function&))
>>> referenced by CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj:(llvm::BogusControlFlow::doF(llvm::Module&))
ld.lld: error: undefined symbol: llvm::CloneBasicBlock(llvm::BasicBlock const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>>&, llvm::Twine const&, llvm::Function*, llvm::ClonedCodeInfo*, llvm::DebugInfoFinder*)
>>> referenced by CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj:(llvm::BogusControlFlow::createAlteredBasicBlock(llvm::BasicBlock*, llvm::Twine const&, llvm::Function*))
ld.lld: error: undefined symbol: llvm::ValueMapper::ValueMapper(llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>>&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*)
>>> referenced by CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj:(llvm::MapValue(llvm::Value const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>>&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*))
ld.lld: error: undefined symbol: llvm::ValueMapper::mapValue(llvm::Value const&)
>>> referenced by CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj:(llvm::MapValue(llvm::Value const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>>&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*))
ld.lld: error: undefined symbol: llvm::ValueMapper::~ValueMapper()
>>> referenced by CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj:(llvm::MapValue(llvm::Value const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>>&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*))
>>> referenced by CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.obj:(llvm::MapValue(llvm::Value const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>>&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*))
ld.lld: error: undefined symbol: llvm::LowerSwitchPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)
>>> referenced by CMakeFiles/LLVMObfuscator.dir/flattening/Flattening.cpp.obj:(llvm::FlatteningObfuscatorPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&))
c++: error: linker command failed with exit code 1 (use -v to see invocation)
Missing link library LLVMInterpreter
in CMakeLists.txt L:41
This results in the inability to compile.
e.g:
Link error
Edit: change to pastebin
Hi
I try to compile a test code:
#include <stdio.h>
int main(){
printf("Test print\n");
return 0;
}
The command line is the following:
LLVM_OBF_SCALAROPTIMIZERLATE_PASSES="split-basic-blocks" /usr/lib/llvm-14/bin/clang -v -fno-legacy-pass-manager -fpass-plugin=/home/user/obfuscator-llvm/build/libLLVMObfuscator.so test.c
I get the following error:
Debian clang version 14.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-14/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/13
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/13
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
"/usr/lib/llvm-14/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -v -fcoverage-compilation-dir=/home/user/Tools/clangtest -resource-dir /usr/lib/llvm-14/lib/clang/14.0.6 -internal-isystem /usr/lib/llvm-14/lib/clang/14.0.6/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/home/Tools/clangtest -ferror-limit 19 -fgnuc-version=4.2.1 -fno-legacy-pass-manager -fcolor-diagnostics -fpass-plugin=/home/user/Tools/obfuscator-llvm/build/libLLVMObfuscator.so -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/test-1676a5.o -x c test.c
clang -cc1 version 14.0.6 based upon LLVM 14.0.6 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/llvm-14/lib/clang/14.0.6/include
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
clang (LLVM option parsing): CommandLine Error: Option 'enable-fs-discriminator' registered more than once!
fatal error: error in backend: inconsistency in registered CommandLine options
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Debian clang version 14.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-14/bin
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/test-6d6820.c
clang: note: diagnostic msg: /tmp/test-6d6820.sh
clang: note: diagnostic msg:
********************
I am on Debian 64 bits 6.5.0. I have tried with clang versions 14 to 17, resulting in the same issue. The only difference is that -fno-legacy-pass-manager is not supported after version 15.
I have also tried compiling different files for different architectures, still no difference. I guess the .so obfuscator needs to be compiled with specific flags ?
Crash when using string encryption, based on ndk 25.2.9519653, Macos 13.5
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 clang-14 0x000000010c5a890b llvm::SmallVectorBase<unsigned long long>::set_size(unsigned long) + 352411
1 clang-14 0x000000010c5a79c5 llvm::SmallVectorBase<unsigned long long>::set_size(unsigned long) + 348501
2 clang-14 0x000000010c50a7b7 llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::setCallback(std::__1::function<void (bool const&)>) + 64263
3 clang-14 0x000000010c50a96d llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::setCallback(std::__1::function<void (bool const&)>) + 64701
4 libsystem_platform.dylib 0x00007ff8178df5ed _sigtramp + 29
5 libLLVMObfuscator.dylib 0x000000011090acb3 llvm::Value::setName(llvm::Twine const&) + 51
6 libLLVMObfuscator.dylib 0x00000001107eec56 llvm::ConstantFoldGetElementPtr(llvm::Type*, llvm::Constant*, bool, llvm::Optional<unsigned int>, llvm::ArrayRef<llvm::Value*>) + 166
7 libLLVMObfuscator.dylib 0x000000011080fd95 llvm::ConstantExpr::getGetElementPtr(llvm::Type*, llvm::Constant*, llvm::ArrayRef<llvm::Value*>, bool, llvm::Optional<unsigned int>, llvm::Type*) + 85
8 libLLVMObfuscator.dylib 0x000000011087e1d4 llvm::ConstantFolder::FoldGEP(llvm::Type*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, bool) const + 100
9 libLLVMObfuscator.dylib 0x00000001107a69d5 llvm::IRBuilderBase::CreateConstInBoundsGEP2_32(llvm::Type*, llvm::Value*, unsigned int, unsigned int, llvm::Twine const&) + 133
10 libLLVMObfuscator.dylib 0x00000001107a6717 llvm::StringObfuscatorPass::addDecodeAllStringsFunction(llvm::Module&, llvm::Function*) + 599
11 libLLVMObfuscator.dylib 0x00000001107a6ab8 llvm::StringObfuscatorPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) + 56
12 libLLVMObfuscator.dylib 0x000000011079b292 llvm::detail::PassModel<llvm::Module, llvm::StringObfuscatorPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) + 18
13 clang-14 0x000000010bf7ff78 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) + 360
14 clang-14 0x000000010c8046ce void llvm::DomTreeBuilder::Calculate<llvm::DominatorTreeBase<llvm::VPBlockBase, false> >(llvm::DominatorTreeBase<llvm::VPBlockBase, false>&) + 692670
15 clang-14 0x000000010ca70590 void llvm::DomTreeBuilder::Calculate<llvm::DominatorTreeBase<llvm::VPBlockBase, false> >(llvm::DominatorTreeBase<llvm::VPBlockBase, false>&) + 3231872
16 clang-14 0x000000010d9b5c3e llvm::IRComparer<llvm::EmptyData>::generateFunctionData(llvm::IRDataT<llvm::EmptyData>&, llvm::Function const&) + 6454878
17 clang-14 0x000000010ccd1ba0 llvm::Registry<clang::PluginASTAction>::begin() + 12000
18 clang-14 0x000000010cc57ac7 void llvm::DomTreeBuilder::Calculate<llvm::DominatorTreeBase<llvm::VPBlockBase, false> >(llvm::DominatorTreeBase<llvm::VPBlockBase, false>&) + 5227959
19 clang-14 0x000000010cd21f06 llvm::Registry<clang::PluginASTAction>::begin() + 340550
20 clang-14 0x000000010b2b2baa
21 clang-14 0x000000010b2b0621
22 clang-14 0x000000010cb61c17 void llvm::DomTreeBuilder::Calculate<llvm::DominatorTreeBase<llvm::VPBlockBase, false> >(llvm::DominatorTreeBase<llvm::VPBlockBase, false>&) + 4220679
23 clang-14 0x000000010c50a71b llvm::cl::opt<bool, false, llvm::cl::parser<bool> >::setCallback(std::__1::function<void (bool const&)>) + 64107
24 clang-14 0x000000010cb615da void llvm::DomTreeBuilder::Calculate<llvm::DominatorTreeBase<llvm::VPBlockBase, false> >(llvm::DominatorTreeBase<llvm::VPBlockBase, false>&) + 4219082
25 clang-14 0x000000010cb3c181 void llvm::DomTreeBuilder::Calculate<llvm::DominatorTreeBase<llvm::VPBlockBase, false> >(llvm::DominatorTreeBase<llvm::VPBlockBase, false>&) + 4066417
26 clang-14 0x000000010cb3c4cd void llvm::DomTreeBuilder::Calculate<llvm::DominatorTreeBase<llvm::VPBlockBase, false> >(llvm::DominatorTreeBase<llvm::VPBlockBase, false>&) + 4067261
27 clang-14 0x000000010cb4dbdd void llvm::DomTreeBuilder::Calculate<llvm::DominatorTreeBase<llvm::VPBlockBase, false> >(llvm::DominatorTreeBase<llvm::VPBlockBase, false>&) + 4138701
28 clang-14 0x000000010b2af996
29 dyld 0x00007ff81755841f start + 1903
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Android (9352603, based on r450784d1) clang version 14.0.7 (https://android.googlesource.com/toolchain/llvm-project 4c603efb0cca074e9238af8b4106c30add4418f6)
Target: armv7-none-linux-android19
Thread model: posix
Hello,
I'm having problems compiling the obfuscator llvm on macOS.
Any suggestion?
**LLVM: ** 14.0.6
**macOS SDK: ** 13.0
Output error
โ build: ninja -j8
[5/5] Linking CXX shared library libLLVMObfuscator.dylib
FAILED: libLLVMObfuscator.dylib
: && /Library/Developer/CommandLineTools/usr/bin/c++ -Wall -Wextra -Wno-unused-parameter -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX13.0.sdk -mmacosx-version-min=12.6 -dynamiclib -Wl,-headerpad_max_install_names -o libLLVMObfuscator.dylib -install_name @rpath/libLLVMObfuscator.dylib CMakeFiles/LLVMObfuscator.dir/Plugin.cpp.o CMakeFiles/LLVMObfuscator.dir/utils/Utils.cpp.o CMakeFiles/LLVMObfuscator.dir/utils/CryptoUtils.cpp.o CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.o -L/usr/local/Cellar/llvm@14/14.0.6/lib -Wl,-rpath,/usr/local/Cellar/llvm@14/14.0.6/lib /usr/local/Cellar/llvm@14/14.0.6/lib/libLLVMCore.a /usr/local/Cellar/llvm@14/14.0.6/lib/libLLVMSupport.a /usr/local/Cellar/llvm@14/14.0.6/lib/libLLVMBinaryFormat.a /usr/local/Cellar/llvm@14/14.0.6/lib/libLLVMRemarks.a /usr/local/Cellar/llvm@14/14.0.6/lib/libLLVMBitstreamReader.a /usr/local/Cellar/llvm@14/14.0.6/lib/libLLVMSupport.a -lm /Library/Developer/CommandLineTools/SDKs/MacOSX13.0.sdk/usr/lib/libz.tbd /Library/Developer/CommandLineTools/SDKs/MacOSX13.0.sdk/usr/lib/libcurses.tbd /usr/local/Cellar/llvm@14/14.0.6/lib/libLLVMDemangle.a && :
Undefined symbols for architecture x86_64:
"llvm::ValueMapper::mapValue(llvm::Value const&)", referenced from:
llvm::MapValue(llvm::Value const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*) in BogusControlFlow.cpp.o
"llvm::ValueMapper::ValueMapper(llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*)", referenced from:
llvm::MapValue(llvm::Value const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*) in BogusControlFlow.cpp.o
"llvm::ValueMapper::~ValueMapper()", referenced from:
llvm::MapValue(llvm::Value const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&, llvm::RemapFlags, llvm::ValueMapTypeRemapper*, llvm::ValueMaterializer*) in BogusControlFlow.cpp.o
"llvm::CloneBasicBlock(llvm::BasicBlock const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&, llvm::Twine const&, llvm::Function*, llvm::ClonedCodeInfo*, llvm::DebugInfoFinder*)", referenced from:
llvm::BogusControlFlow::createAlteredBasicBlock(llvm::BasicBlock*, llvm::Twine const&, llvm::Function*) in BogusControlFlow.cpp.o
"llvm::DemotePHIToStack(llvm::PHINode*, llvm::Instruction*)", referenced from:
llvm::fixStack(llvm::Function*) in Utils.cpp.o
"llvm::DemoteRegToStack(llvm::Instruction&, bool, llvm::Instruction*)", referenced from:
llvm::fixStack(llvm::Function*) in Utils.cpp.o
"llvm::SubstitutionPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)", referenced from:
llvm::detail::PassModel<llvm::Function, llvm::SubstitutionPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) in Plugin.cpp.o
"llvm::SubstitutionPass::SubstitutionPass()", referenced from:
llvm::addPassWithName(llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >&, llvm::StringRef&) in Plugin.cpp.o
"llvm::SplitBasicBlockPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)", referenced from:
llvm::detail::PassModel<llvm::Function, llvm::SplitBasicBlockPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) in Plugin.cpp.o
"llvm::SplitBasicBlockPass::SplitBasicBlockPass()", referenced from:
llvm::addPassWithName(llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >&, llvm::StringRef&) in Plugin.cpp.o
"llvm::FlatteningObfuscatorPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)", referenced from:
llvm::detail::PassModel<llvm::Function, llvm::FlatteningObfuscatorPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) in Plugin.cpp.o
"llvm::FlatteningObfuscatorPass::FlatteningObfuscatorPass()", referenced from:
llvm::addPassWithName(llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >&, llvm::StringRef&) in Plugin.cpp.o
"llvm::Function::viewCFG() const", referenced from:
llvm::BogusControlFlow::bogus(llvm::Function&) in BogusControlFlow.cpp.o
llvm::BogusControlFlow::doF(llvm::Module&) in BogusControlFlow.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Hi, put together a project build recently that was working perfectly during compile time however now I am starting to see a consistent crash when building core for an invalid reference which terminates the build.
Rechecked the Rust obfuscation guide but I suspect there could be some incompatibility with newer nightly builds.
Any help appreciated. Let me know if you want any error logs etc.
The error returned when building libc and other core libraries appears to be: undefined reference 'diagnostic-width
I use the guide and trying to adapt it for Windows OS, when I run the command python .\x.py build
, I get thread 'main' panicked at 'shared linking to LLVM is not currently supported on x86_64-pc-windows-msvc', src\bootstrap\native.rs:162:13
.
Is there any way to do this on Windows?
building error on MacOS 13.6 (M1 Pro MacBook)
Apple clang version 15.0.0 (clang-1500.0.40.1)
Target: arm64-apple-darwin22.6.0
cmake version 3.27.6
[1/7] Building CXX object CMakeFiles/LLVMObfuscator.dir/utils/CryptoUtils.cpp.o
FAILED: CMakeFiles/LLVMObfuscator.dir/utils/CryptoUtils.cpp.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DLLVMObfuscator_EXPORTS -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/opt/llvm/include -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/build -fno-rtti -Wall -Wextra -Wno-unused-parameter -std=gnu++14 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -mmacosx-version-min=13.6 -fPIC -MD -MT CMakeFiles/LLVMObfuscator.dir/utils/CryptoUtils.cpp.o -MF CMakeFiles/LLVMObfuscator.dir/utils/CryptoUtils.cpp.o.d -o CMakeFiles/LLVMObfuscator.dir/utils/CryptoUtils.cpp.o -c /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp
In file included from /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:20:
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.h:84:2: error: "Unknown endianness of the compilation platform, check this header aes_encrypt.h"
#error \
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:535:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(tmpA, key);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:651:3: error: use of undeclared identifier 'LOAD64H'
LOAD64H(iseed, ctr + 8);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:653:3: error: use of undeclared identifier 'STORE64H'
STORE64H(ctr + 8, iseed);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:728:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(ret, tmp);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:741:3: error: use of undeclared identifier 'LOAD64H'
LOAD64H(ret, tmp);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:780:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(ks[0], k);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:781:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(ks[1], k + 4);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:782:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(ks[2], k + 8);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:783:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(ks[3], k + 12);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:812:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(state0, in + 0);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:813:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(state1, in + 4);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:814:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(state2, in + 8);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:815:3: error: use of undeclared identifier 'LOAD32H'
LOAD32H(state3, in + 12);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:861:3: error: use of undeclared identifier 'STORE32H'
STORE32H(out + 0, state0);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:862:3: error: use of undeclared identifier 'STORE32H'
STORE32H(out + 4, state1);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:863:3: error: use of undeclared identifier 'STORE32H'
STORE32H(out + 8, state2);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:864:3: error: use of undeclared identifier 'STORE32H'
STORE32H(out + 12, state3);
^
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.cpp:914:5: error: use of undeclared identifier 'LOAD32H'
LOAD32H(W[i], buf + (4 * i));
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
[2/7] Building CXX object CMakeFiles/LLVMObfuscator.dir/substitution/Substitution.cpp.o
FAILED: CMakeFiles/LLVMObfuscator.dir/substitution/Substitution.cpp.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DLLVMObfuscator_EXPORTS -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/opt/llvm/include -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/build -fno-rtti -Wall -Wextra -Wno-unused-parameter -std=gnu++14 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -mmacosx-version-min=13.6 -fPIC -MD -MT CMakeFiles/LLVMObfuscator.dir/substitution/Substitution.cpp.o -MF CMakeFiles/LLVMObfuscator.dir/substitution/Substitution.cpp.o.d -o CMakeFiles/LLVMObfuscator.dir/substitution/Substitution.cpp.o -c /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/substitution/Substitution.cpp
In file included from /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/substitution/Substitution.cpp:23:
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.h:84:2: error: "Unknown endianness of the compilation platform, check this header aes_encrypt.h"
#error \
^
1 error generated.
[3/7] Building CXX object CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.o
FAILED: CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DLLVMObfuscator_EXPORTS -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/opt/llvm/include -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/build -fno-rtti -Wall -Wextra -Wno-unused-parameter -std=gnu++14 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -mmacosx-version-min=13.6 -fPIC -MD -MT CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.o -MF CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.o.d -o CMakeFiles/LLVMObfuscator.dir/bogus/BogusControlFlow.cpp.o -c /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/bogus/BogusControlFlow.cpp
In file included from /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/bogus/BogusControlFlow.cpp:99:
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.h:84:2: error: "Unknown endianness of the compilation platform, check this header aes_encrypt.h"
#error \
^
1 error generated.
[4/7] Building CXX object CMakeFiles/LLVMObfuscator.dir/flattening/Flattening.cpp.o
FAILED: CMakeFiles/LLVMObfuscator.dir/flattening/Flattening.cpp.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DLLVMObfuscator_EXPORTS -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/opt/llvm/include -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/build -fno-rtti -Wall -Wextra -Wno-unused-parameter -std=gnu++14 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -mmacosx-version-min=13.6 -fPIC -MD -MT CMakeFiles/LLVMObfuscator.dir/flattening/Flattening.cpp.o -MF CMakeFiles/LLVMObfuscator.dir/flattening/Flattening.cpp.o.d -o CMakeFiles/LLVMObfuscator.dir/flattening/Flattening.cpp.o -c /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/flattening/Flattening.cpp
In file included from /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/flattening/Flattening.cpp:25:
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.h:84:2: error: "Unknown endianness of the compilation platform, check this header aes_encrypt.h"
#error \
^
1 error generated.
[5/7] Building CXX object CMakeFiles/LLVMObfuscator.dir/split/SplitBasicBlocks.cpp.o
FAILED: CMakeFiles/LLVMObfuscator.dir/split/SplitBasicBlocks.cpp.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DLLVMObfuscator_EXPORTS -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/opt/llvm/include -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/build -fno-rtti -Wall -Wextra -Wno-unused-parameter -std=gnu++14 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -mmacosx-version-min=13.6 -fPIC -MD -MT CMakeFiles/LLVMObfuscator.dir/split/SplitBasicBlocks.cpp.o -MF CMakeFiles/LLVMObfuscator.dir/split/SplitBasicBlocks.cpp.o.d -o CMakeFiles/LLVMObfuscator.dir/split/SplitBasicBlocks.cpp.o -c /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/split/SplitBasicBlocks.cpp
In file included from /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/split/SplitBasicBlocks.cpp:20:
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.h:84:2: error: "Unknown endianness of the compilation platform, check this header aes_encrypt.h"
#error \
^
1 error generated.
[6/7] Building CXX object CMakeFiles/LLVMObfuscator.dir/Plugin.cpp.o
FAILED: CMakeFiles/LLVMObfuscator.dir/Plugin.cpp.o
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DLLVMObfuscator_EXPORTS -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/opt/llvm/include -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm -I/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/build -fno-rtti -Wall -Wextra -Wno-unused-parameter -std=gnu++14 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -mmacosx-version-min=13.6 -fPIC -MD -MT CMakeFiles/LLVMObfuscator.dir/Plugin.cpp.o -MF CMakeFiles/LLVMObfuscator.dir/Plugin.cpp.o.d -o CMakeFiles/LLVMObfuscator.dir/Plugin.cpp.o -c /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/Plugin.cpp
In file included from /Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/Plugin.cpp:12:
/Users/markmjw/Downloads/llvm-pass/obfuscator-llvm/utils/CryptoUtils.h:84:2: error: "Unknown endianness of the compilation platform, check this header aes_encrypt.h"
#error \
^
1 error generated.
ninja: build stopped: subcommand failed.
Originally posted by @MarkMjw in #4 (comment)
I applied SCALAROPTIMIZERLATE_PASSES with flattening.
However, an error occurs when building my iPhone app.
clang: error: unable to execute command: Segmentation fault: 11
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Target: arm64-apple-ios13.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
clang: note: diagnostic msg:
********************
An error occurs while executing the below source.
flattening.cpp
run(Function &F, ...)
{
analysis.intersect(LowerSwitchPass().run(F, AM)); // crash
}
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 clang 0x0000000106676a8c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 clang 0x00000001066759c0 llvm::sys::RunSignalHandlers() + 112
2 clang 0x0000000106677118 SignalHandler(int) + 344
3 libsystem_platform.dylib 0x000000018ad7ea24 _sigtramp + 56
4 clang 0x0000000105f35e64 llvm::AnalysisManager<llvm::Function>::getResultImpl(llvm::AnalysisKey*, llvm::Function&) + 260
5 libLLVMObfuscator.dylib 0x000000010dc1c620 llvm::LowerSwitchPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) + 52
6 libLLVMObfuscator.dylib 0x000000010d985584 llvm::Flattening::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) + 136
llvm (clang-15) build option
cmake -S llvm -B Release -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_NEW_PASS_MANAGER=ON -DCMAKE_OSX_ARCHITECTURES=arm64 -DLLVM_CREATE_XCODE_TOOLCHAIN=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi"
obfuscator build option
cmake -B Release -DLLVM_DIR=/Users/kei/Downloads/llvm-project/Release/lib/cmake -DCMAKE_OSX_ARCHITECTURES=arm64
app build option
Clang -fno-legacy-pass-manager -fpass-plugin=/Users/kei/Downloads/obfuscator-llvm/Release/libLLVMObfuscator.dylib 1.c -o 1.o -DCMAKE_OSX_ARCHITECTURES=arm64
Good afternoon.
I followed the manual for rust and ran into a problem building obfuscate-llvm. There were no deviations from the manual until make -j8
command in 3. Build the obufscation
section. I've tried both branches, nothing changed.
Error log in the attached file.
I would be extremely grateful for any help, as extremely interested in using this project.
Thank you in advance!
log.txt
Hi @PatriceBlin I've been having some issues trying to build the plugin locally. I've been following your guide on how to do this with the android NDK.
I'm trying to do this for NDK r25 revision r450784d.
Environment is macOS 13.6 with an Apple Silicon chip.
LLVM_HOME is set to: ~/tmp/llvm-toolchain/out/stage2-install/
LLVM_DIR is set to: $LLVM_HOME/lib64/cmake
TOOLCHAIN is ~/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64
CXX_HEADERS is set to: $LLVM_HOME/include/c++/v1
but I've tried these as well:
android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++
android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/include/c++
When I try to build the plugin I get the following:
$cmake -S ~/obfuscator-llvm -B ~/tmp/llvm-obfuscation-ndk -D LLVM_DIR="$LLVM_DIR" -D CMAKE_CXX_COMPILER=$CXX -D CMAKE_CXX_FLAGS="$CXXFLAGS"
-- The C compiler identification is Clang 14.0.6
-- The CXX compiler identification is Clang 14.0.6
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: /Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang
-- Check for working C compiler: /Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang - broken
CMake Error at /opt/homebrew/Cellar/cmake/3.27.6/share/cmake/Modules/CMakeTestCCompiler.cmake:67 (message):
The C compiler
"/Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: '/Users/andre.bedran/tmp/llvm-obfuscation-ndk/CMakeFiles/CMakeScratch/TryCompile-wSc4q3'
Run Build Command(s): /opt/homebrew/Cellar/cmake/3.27.6/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_da402/fast
/Applications/Xcode.14.3.1.14E300b.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_da402.dir/build.make CMakeFiles/cmTC_da402.dir/build
Building C object CMakeFiles/cmTC_da402.dir/testCCompiler.c.o
/Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang -isystem /Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/ -I/Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -arch arm64 -isysroot /Applications/Xcode.14.3.1.14E300b.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -MD -MT CMakeFiles/cmTC_da402.dir/testCCompiler.c.o -MF CMakeFiles/cmTC_da402.dir/testCCompiler.c.o.d -o CMakeFiles/cmTC_da402.dir/testCCompiler.c.o -c /Users/andre.bedran/tmp/llvm-obfuscation-ndk/CMakeFiles/CMakeScratch/TryCompile-wSc4q3/testCCompiler.c
Linking C executable cmTC_da402
/opt/homebrew/Cellar/cmake/3.27.6/bin/cmake -E cmake_link_script CMakeFiles/cmTC_da402.dir/link.txt --verbose=1
/Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang -isystem /Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/ -I/Users/andre.bedran/tmp/android-ndk-r25/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1 -arch arm64 -isysroot /Applications/Xcode.14.3.1.14E300b.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L CMakeFiles/cmTC_da402.dir/testCCompiler.c.o -o cmTC_da402
ld: error: unknown argument '-dynamic', did you mean '-Bdynamic'
ld: error: unknown argument '-arch'
ld: error: unknown argument '-syslibroot'
ld: error: unknown argument '-search_paths_first'
ld: error: unknown emulation: acosx_version_min
ld: error: cannot open arm64: No such file or directory
ld: error: cannot open 13.0.0: No such file or directory
ld: error: cannot open /Applications/Xcode.14.3.1.14E300b.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk: Is a directory
ld: error: unable to find library -lSystem
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [cmTC_da402] Error 1
make: *** [cmTC_da402/fast] Error 2
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
-- Configuring incomplete, errors occurred!```
Looks like either I have a completely broken clang in my NDK installation, or I'm missing something crucial for it to work.
I have applied the fixes to `CryptoUtils.h` and `CMakeLists.txt` from the macOS build fix branch already, and I've tried some things you mentioned in #6 without success.
Do you have any thoughts? Thanks in advance.
P.S.: If you have any guidance on how to use the plugin through gradle afterwards, that would be great too.
Hi,
I'm having difficulties building and using the obfuscator with Android.
I am following the instructions on https://github.com/eshard/obfuscator-llvm/blob/main/docs/ANDROID_NDK.md
I tried using the latest NDK (r25b) as well as the one documented on the page (r23b - but I had to revert the latest changes for llvm 14 in order to make the plugin build)
First of all, I believe --no-build windows --no-build lldb
should be changed into --no-build "windows,lldb"
(with r25b both worked, but with r23b the two-separate option ended up building windows tools anyway)
Then, the instruction says 'Compile the plugin with -D LLVM_DIR=~/tmp/llvm-toolchain/out/stage2-install/lib64/cmake along with a NDK compile environment.' but the code below initializes LLVM_DIR to '${LLVM_HOME}/lib64/cmake'. I believe the first one is correct, please confirm.
With the above changes, I am able to build libLLVMObfuscator.so but using it gives undefined symbols:
/home/spop/obfuscator/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android23-clang++ -I/home/spop/obfuscator/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -I/home/spop/obfuscator/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android -O1 -fno-legacy-pass-manager -fpass-plugin=out/libLLVMObfuscator.so -c foobar.cpp -o foobar.o error: unable to load plugin 'out/libLLVMObfuscator.so': 'Could not load library 'out/libLLVMObfuscator.so': out/libLLVMObfuscator.so: undefined symbol: _ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev'
Any idea ? Thanks !
My develop environment is Windows and Visual Studio, how can I use the project with them, I didn't see any documentation. Sincerely thanks to reply.
Hello, I got the following error while applying the passes with clang,
zhong@noodle:~/proj/hello_world$ /usr/lib/llvm-14/bin/clang -fno-legacy-pass-manager -fpass-plugin=/home/zhong/proj/obfuscator-llvm/build/libLLVMObfuscator.so hello_world.c -o hello_world
clang (LLVM option parsing): CommandLine Error: Option 'enable-fs-discriminator' registered more than once!
fatal error: error in backend: inconsistency in registered CommandLine options
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Ubuntu clang version 14.0.6-++20220622053131+f28c006a5895-1exp120220622173215.157
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-14/bin
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/hello_world-889897.c
clang: note: diagnostic msg: /tmp/hello_world-889897.sh
clang: note: diagnostic msg:
********************
Do have any idea how to solve this? Thanks.
It raises the following error:
$ /usr/local/clang+llvm-14.0.6-x86_64-linux-gnu-ubuntu-18.04/bin/clang -fno-legacy-pass-manager -fpass-plugin=/usr/local/obfuscator-llvm-x86_64-linux-gnu-ubuntu-18.04/usr/lib/libLLVMObfuscator.so example_ControlFlowFlattening.c -o example_ControlFlowFlattening
clang (LLVM option parsing): CommandLine Error: Option 'enable-fs-discriminator' registered more than once!
fatal error: error in backend: inconsistency in registered CommandLine options
clang-14: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 14.0.6
Target: x86_64-unknown-linux-gnu
Thread model: posix
..
I'm successful in building LLVM and the obfuscation plugin, however I'm unable to apply the obfuscation passes. What am I missing here?
#include <stdlib.h>
int main(int argc, char** argv) {
int a = atoi(argv[1]);
if(a == 0)
return 1;
else
return 10;
return 0;
}
(https://github.com/heroims/obfuscator/wiki/Bogus-Control-Flow)
clang main.c -o main
export LLVM_OBF_SCALAROPTIMIZERLATE_PASSES="flattening, bogus, substitution, split-basic-blocks"
clang -fno-legacy-pass-manager -fpass-plugin=/obfuscator-llvm/build/libLLVMObfuscator.so main.c -o obf
diff main obf
Binaries are the same. I've also tried:
export LLVM_OBF_PEEPHOLE_PASSES="flattening, bogus, substitution, split-basic-blocks"
export LLVM_OBF_SCALAROPTIMIZERLATE_PASSES="flattening, bogus, substitution, split-basic-blocks"
export LLVM_OBF_VECTORIZERSTART_PASSES="flattening, bogus, substitution, split-basic-blocks"
export LLVM_OBF_PIPELINESTART_PASSES="flattening, bogus, substitution, split-basic-blocks"
export LLVM_OBF_PIPELINEEARLYSIMPLIFICATION_PASSES="flattening, bogus, substitution, split-basic-blocks"
export LLVM_OBF_OPTIMIZERLASTEP_PASSES="flattening, bogus, substitution, split-basic-blocks"
clang -fno-legacy-pass-manager -fpass-plugin=/obfuscator-llvm/build/libLLVMObfuscator.so main.c -o obf
Still, obfuscation is not applied.
FROM archlinux
RUN pacman -Syu --needed base-devel --noconfirm
RUN pacman -S vim git cmake ninja python3 --noconfirm
RUN git clone --depth 1 --branch release/14.x https://github.com/llvm/llvm-project.git
WORKDIR /llvm-project/llvm
RUN mkdir -p build
WORKDIR /llvm-project/llvm/build
RUN cmake -G "Ninja" -DCMAKE_INSTALL_PREFIX=/opt/llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='lld;clang' -DLLVM_TARGETS_TO_BUILD="host;WebAssembly" -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DENABLE_LLVM_SHARED=1 ..
RUN ninja -j$(($(nproc) / 2))
RUN ninja install
WORKDIR /
RUN git clone https://github.com/eshard/obfuscator-llvm.git
WORKDIR /obfuscator-llvm
RUN sed -i 's/ LLVMCore//' CMakeLists.txt
RUN mkdir -p build
WORKDIR /obfuscator-llvm/build
RUN cmake -G "Ninja" -DLLVM_DIR=/opt/llvm/lib/cmake ..
RUN ninja -j$(($(nproc) / 2))
ENV PATH="$PATH:/llvm-project/llvm/build/bin"
WORKDIR /
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.