bluesadi / Pluto

Obfuscator based on LLVM 14.0.6
809 stars 181 forks source link

Some features are broken #43

Open ghost opened 1 year ago

ghost commented 1 year ago

I compiled NDK 23.2.8568313 with Pluto integrated into Windows exe using Linux mint 21 by following this tutorial https://bbs.pediy.com/thread-271271.htm

I have tested each flags with my NDK project, here is the result:

MBA Obfuscation: OK

Globals Encryption: OK

Variable Substitution: OK

Instruction Substitution: OK

Trap Angr: OK

Bogus Control Flow: Stuck forever

Control Flow Flattening: Crash

See issue: https://github.com/bluesadi/Pluto-Obfuscator/issues/22

Log output ```ShellSession PS D:\Temp\Hooking-Project> ./compile23 D:\Temp\Hooking-Project>D:\AndroidSDK\ndk\23.2.8568313\ndk-build Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16. [armeabi-v7a] Compile++ arm : ab <= Base64.cpp PLEASE submit a bug report to https://github.com/android-ndk/ndk/issues and include the crash backtrace, preprocessed source, and associated run script. Stack dump: 0. Program arguments: D:/AndroidSDK/ndk/23.2.8568313/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF ./obj/local/armeabi-v7a/objs/ab/easy-encryption/Base64.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot D:/AndroidSDK/ndk/23.2.8568313/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -O2 -DNDEBUG -Ijni/thirdparty/include -Ijni/thirdparty/whale/include -Ijni/Substrate -Ijni/JNI -Ijni/libzip -Ijni/bzip2 -Ijni/dobby/include -Ijni/dobby/source/InterceptRouting/Routing/FunctionInlineReplace -Ijni/dobby/source/InterceptRouting/Routing/FunctionInlineHook -Ijni/dobby/source -Ijni/dobby/source/include -Ijni/dobby/xnucxx/xnucxx -Ijni/dobby/external/logging -Ijni/dobby/external/misc-helper -Ijni/dobby/external -Ijni/dobby/external -Ijni/dobby/source/Backend/UserMode/ -Ijni/dobby/builtin-plugin -Ijni/dobby/builtin-plugin/SymbolResolver -ID:/AndroidSDK/ndk/23.2.8568313/build//../sources/cxx-stl/llvm-libc++/include -ID:/AndroidSDK/ndk/23.2.8568313/build//../sources/cxx-stl/llvm-libc++abi/include -Ijni -DANDROID -fvisibility=hidden -w -std=c17 -fexceptions -fpermissive -fno-rtti -fms-extensions -ffunction-sections -fdata-sections -fvisibility-inlines-hidden -nostdinc++ -Wformat -Werror=format-security -fno-strict-aliasing -fvisibility=hidden -std=c++17 -w -Wno-error=c++11-narrowing -fexceptions -fpermissive -fno-rtti -fms-extensions -ffunction-sections -fdata-sections -fvisibility-inlines-hidden -mllvm -fla -fexceptions -c jni/easy-encryption/Base64.cpp -o ./obj/local/armeabi-v7a/objs/ab/easy-encryption/Base64.o 1. parser at end of file 2. Per-function optimization 3. Running pass 'Early CSE' on function '@_ZNSt6__ndk113basic_filebufIcNS_11char_traitsIcEEE5closeEv' #0 0x00007ff7326887fb (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0xdc87fb) #1 0x00007ff732691299 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0xdd1299) #2 0x00007ff731cabc93 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x3ebc93) #3 0x00007ff731cb2738 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x3f2738) #4 0x00007ff731afa348 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x23a348) #5 0x00007ff731af993e (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x23993e) #6 0x00007ff731b009a8 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x2409a8) #7 0x00007ff732b3ce4b (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x127ce4b) #8 0x00007ff732e98343 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x15d8343) #9 0x00007ff7341d4e33 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x2914e33) #10 0x00007ff732e00034 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1540034) #11 0x00007ff731f899f0 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x6c99f0) #12 0x00007ff7320040c3 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x7440c3) #13 0x00007ff7318c6482 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x6482) #14 0x00007ff7318c4661 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x4661) #15 0x00007ff732c13f16 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1353f16) #16 0x00007ff731e37971 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x577971) #17 0x00007ff732c139b4 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x13539b4) #18 0x00007ff731f52074 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x692074) #19 0x00007ff731f52459 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x692459) #20 0x00007ff731f653d6 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x6a53d6) #21 0x00007ff7318c3dcd (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x3dcd) #22 0x00007ff7318c1395 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1395) #23 0x00007ff7318c14c8 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x14c8) #24 0x00007ffebefa55a0 (C:\Windows\System32\KERNEL32.DLL+0x155a0) #25 0x00007ffebf78485b (C:\Windows\SYSTEM32\ntdll.dll+0x485b) clang++: error: clang frontend command failed due to signal (use -v to see invocation) Android (dev, based on r416183c2) clang version 12.0.9 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee) Target: armv7-none-linux-android16 Thread model: posix InstalledDir: D:/AndroidSDK/ndk/23.2.8568313/build//../toolchains/llvm/prebuilt/windows-x86_64/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: C:\Users\Gaming\AppData\Local\Temp\Base64-7d665d.cpp clang++: note: diagnostic msg: C:\Users\Gaming\AppData\Local\Temp\Base64-7d665d.sh clang++: note: diagnostic msg: ******************** make: *** [D:/AndroidSDK/ndk/23.2.8568313/build//../build/core/build-binary.mk:478: obj/local/armeabi-v7a/objs/ab/easy-encryption/Base64.o] Error 1 ```

Control Flow Flattening Enhanced: Crash

Log output ```ShellSession PS D:\Temp\Hooking-Project> ./compile23 D:\Temp\Hooking-Project>D:\AndroidSDK\ndk\23.2.8568313\ndk-build Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16. [armeabi-v7a] Compile++ arm : ab <= Base64.cpp PLEASE submit a bug report to https://github.com/android-ndk/ndk/issues and include the crash backtrace, preprocessed source, and associated run script. Stack dump: 0. Program arguments: D:/AndroidSDK/ndk/23.2.8568313/build//../toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe -MMD -MP -MF ./obj/local/armeabi-v7a/objs/ab/easy-encryption/Base64.o.d -target armv7-none-linux-androideabi16 -fdata-sections -ffunction-sections -fstack-protector-strong -funwind-tables -no-canonical-prefixes --sysroot D:/AndroidSDK/ndk/23.2.8568313/build//../toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-rtti -fpic -march=armv7-a -O2 -DNDEBUG -Ijni/thirdparty/include -Ijni/thirdparty/whale/include -Ijni/Substrate -Ijni/JNI -Ijni/libzip -Ijni/bzip2 -Ijni/dobby/include -Ijni/dobby/source/InterceptRouting/Routing/FunctionInlineReplace -Ijni/dobby/source/InterceptRouting/Routing/FunctionInlineHook -Ijni/dobby/source -Ijni/dobby/source/include -Ijni/dobby/xnucxx/xnucxx -Ijni/dobby/external/logging -Ijni/dobby/external/misc-helper -Ijni/dobby/external -Ijni/dobby/external -Ijni/dobby/source/Backend/UserMode/ -Ijni/dobby/builtin-plugin -Ijni/dobby/builtin-plugin/SymbolResolver -ID:/AndroidSDK/ndk/23.2.8568313/build//../sources/cxx-stl/llvm-libc++/include -ID:/AndroidSDK/ndk/23.2.8568313/build//../sources/cxx-stl/llvm-libc++abi/include -Ijni -DANDROID -fvisibility=hidden -w -std=c17 -fexceptions -fpermissive -fno-rtti -fms-extensions -ffunction-sections -fdata-sections -fvisibility-inlines-hidden -nostdinc++ -Wformat -Werror=format-security -fno-strict-aliasing -fvisibility=hidden -std=c++17 -w -Wno-error=c++11-narrowing -fexceptions -fpermissive -fno-rtti -fms-extensions -ffunction-sections -fdata-sections -fvisibility-inlines-hidden -mllvm -fla-ex -fexceptions -c jni/easy-encryption/Base64.cpp -o ./obj/local/armeabi-v7a/objs/ab/easy-encryption/Base64.o 1. parser at end of file 2. Per-module optimization passes 3. Running pass 'CallGraph Pass Manager' on module 'jni/easy-encryption/Base64.cpp'. 4. Running pass 'Aggressive Dead Code Elimination' on function '@_ZNSt6__ndk113__vector_baseIcNS_9allocatorIcEEE5clearEv' #0 0x00007ff731c83770 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x3c3770) #1 0x00007ff731c819e8 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x3c19e8) #2 0x00007ff731c844da (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x3c44da) #3 0x00007ff731afa348 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x23a348) #4 0x00007ff7327774fc (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0xeb74fc) #5 0x00007ff731afab72 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x23ab72) #6 0x00007ff732b3cefb (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x127cefb) #7 0x00007ff732e98343 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x15d8343) #8 0x00007ff7341d4e33 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x2914e33) #9 0x00007ff732e00034 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1540034) #10 0x00007ff731f899f0 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x6c99f0) #11 0x00007ff7320040c3 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x7440c3) #12 0x00007ff7318c6482 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x6482) #13 0x00007ff7318c4661 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x4661) #14 0x00007ff732c13f16 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1353f16) #15 0x00007ff731e37971 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x577971) #16 0x00007ff732c139b4 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x13539b4) #17 0x00007ff731f52074 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x692074) #18 0x00007ff731f52459 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x692459) #19 0x00007ff731f653d6 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x6a53d6) #20 0x00007ff7318c3dcd (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x3dcd) #21 0x00007ff7318c1395 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1395) #22 0x00007ff7318c14c8 (D:\AndroidSDK\ndk\23.2.8568313\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x14c8) #23 0x00007ffebefa55a0 (C:\Windows\System32\KERNEL32.DLL+0x155a0) #24 0x00007ffebf78485b (C:\Windows\SYSTEM32\ntdll.dll+0x485b) clang++: error: clang frontend command failed due to signal (use -v to see invocation) Android (dev, based on r416183c2) clang version 12.0.9 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee) Target: armv7-none-linux-android16 Thread model: posix InstalledDir: D:/AndroidSDK/ndk/23.2.8568313/build//../toolchains/llvm/prebuilt/windows-x86_64/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: C:\Users\Gaming\AppData\Local\Temp\Base64-91d466.cpp clang++: note: diagnostic msg: C:\Users\Gaming\AppData\Local\Temp\Base64-91d466.sh clang++: note: diagnostic msg: ******************** make: *** [D:/AndroidSDK/ndk/23.2.8568313/build//../build/core/build-binary.mk:478: obj/local/armeabi-v7a/objs/ab/easy-encryption/Base64.o] Error 1 ```

Random Control Flow: Crash.

See Issue: https://github.com/bluesadi/Pluto-Obfuscator/issues/40

ghost commented 1 year ago

Can comfirm Pluto is still somewhat broken

za233 commented 1 year ago

could you give me the source code?