# goron **Repository Path**: coolforv/goron ## Basic Information - **Project Name**: goron - **Description**: 转载:https://github.com/amimo/goron - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2022-03-28 - **Last Updated**: 2023-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # goron Yet another llvm based obfuscator. 当前支持特性: - 混淆过程间相关 - 间接跳转,并加密跳转目标(-mllvm -irobf-indbr) - 间接函数调用,并加密目标函数地址(-mllvm -irobf-icall) - 间接全局变量引用,并加密变量地址(-mllvm -irobf-indgv) - 字符串(c string)加密功能(-mllvm -irobf-cse) - 过程相关控制流平坦混淆(-mllvm -irobf-cff) ## 混淆效果 - ### 未混淆 ![](images/demo.png) - ### 间接跳转(-mllvm -irobf-indbr) ![](images/demo-indirect-br.png) - ### 间接函数调用(-mllvm -irobf-icall) ![](images/demo-indirect-call.png) - ### 间接全局变量引用(-mllvm -irobf-indgv) ![](images/demo-indirect-globals.png) - ### 字符串(c string)加密功能(-mllvm -irobf-cse) ![](images/demo-string-encryption.png) - ### 过程相关控制流平坦混淆(-mllvm -irobf-cff) ![](images/demo-control-flow-flatten.png) - ### [源码及混淆二进制](examples) ## 附加 ``` 一。配置环境 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/user/0/com.termux/files/usr/lib64/ pkg update && pkg upgrade pkg install -y clang python2 cmake openssl-tool make git wget openssh openssh-sftp git clone https://gitee.com/coolforv/goron.git -b llvm-9.0.0 cd goron mkdir build cd build cmake -DLLVM_INCLUDE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm make -j12 二。启动和编译步骤 (先设置好雷电模拟器system.vmdk可写入,备份好雷电模拟器system分区文件D:\leidian\LDPlayer9\vms\leidian0\system.vmdk) 1.启动雷电模拟器和termux 2.执行命令sshd 如果sshd没配置,请配置(/data/user/0/com.termux/files/usr/etc/ssh/sshd_config): Port 2287 Subsystem sftp internal-sftp 3.vscode插件SFTP 4.MT管理器替换libc.so,libdl.so,libm.so三个文件 5.构建和编译 6.恢复雷电模拟器的system分区: copy D:\system.vmdk D:\leidian\LDPlayer9\vms\leidian0\system.vmdk /y 三。其他 ####################bash.bashrc########################### cd $HOME/frp #让termux始终后台保持唤醒 termux-wake-lock #启动ssh sshd #启动frp1端口映射 nohup $HOME/frp/frpc -c $HOME/frp/frpc.ini > /dev/null 2>&1 & cd $HOME ############################################## #编译错误时 将arm64_system_lib64里的ld-android.so、libc.so、libdl.so、libm.so放进/data/user/0/com.termux/files/usr/lib/ ``` ## 下载 ``` git clone https://gitee.com/coolforv/goron.git -b llvm-9.0.0 ``` ## 编译 ``` cd goron mkdir build cd build cmake -DBUG_REPORT_URL:STRING="" -DLLVM_INCLUDE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm make -j12 ``` ## 使用 跟ollvm类似,可通过编译选项开启相应混淆. 如启用间接跳转混淆 ``` $ path_to_the/build/bin/clang -mllvm -irobf -mllvm --irobf-indbr test.c ``` 对于使用autotools的工程 ``` $ CC=path_to_the/build/bin/clang or CXX=path_to_the/build/bin/clang $ CFLAGS+="-mllvm -irobf -mllvm --irobf-indbr" or CXXFLAGS+="-mllvm -irobf -mllvm --irobf-indbr" (or any other obfuscation-related flags) $ ./configure $ make ```