OLLVM环境配置

虚拟机配置: 4g 40g

增加源

deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe

安装cmake

sudo apt-get install cmake -y

安装gcc8

sudo apt-get install gcc-8 g++-8 -y

切换为默认版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8

ollvm

git clone -b llvm-4.0  https://github.com/obfuscator-llvm/obfuscator.git
cd obfuscator/

vim include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
修改源码 char为uint8_t
Expected<std::vector<uint8_t>> readMem(char *Dst, JITTargetAddress Src,
                                      uint64_t Size) {
    // Check for an 'out-of-band' error, e.g. from an MM destructor.
    if (ExistingError)
      return std::move(ExistingError);

    return callB<ReadMem>(Src, Size);
  }

编译

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF ../
make -j4
sudo make install 

make失败了多试几次 内存拉大点

demo

#include <stdio.h>
#include <stdlib.h>

int encryptFunc(int inputNum_1,int inputNum_2){
    int tmpNum_1 = 666, tmpNum_2 = 888, tmpNum_3 = 777;
    return tmpNum_1 ^ tmpNum_2 + tmpNum_3 * inputNum_1 - inputNum_2;
}

int main(int argc,char *argv[]){

    int printNum = 55;
    if (argc > 1)
    {
        printNum = encryptFunc(printNum, atoi(argv[1]));
    }else{
        printNum = encryptFunc(printNum, argc);
    }
    
    printf("Hello OLLVM %d\r\n", printNum);

    return 0;
}

clang -mllvm -sub -mllvm -sub_loop=3  -mllvm -bcf -mllvm -bcf_loop=3 -mllvm -bcf_prob=40 -mllvm -fla -mllvm -split -mllvm -split_num=3 a.cpp -o a.exe

这样就实现了linux下elf文件的编译

那么假如我们想要windows的呢

​ windows OLLVM太鸡巴难配了 系统恢复之后就没配成功过了

那么我们需要minGW交叉编译

sudo apt-get install mingw-w64

安装完再次测试

 clang -target x86_64-w64-windows-gnu  -mllvm -sub -mllvm -sub_loop=3  -mllvm -bcf -mllvm -bcf_loop=3 -mllvm -bcf_prob=40 -mllvm -fla -mllvm -split -mllvm -split_num=3 a.cpp -o a.exe

报错 找不到啥几把路径

指定一下就好了

clang -target x86_64-w64-mingw32  -mllvm -sub -mllvm -sub_loop=3  -mllvm -bcf -mllvm -bcf_loop=3 -mllvm -bcf_prob=40 -mllvm -fla -mllvm -split -mllvm -split_num=3  -L /usr/lib/gcc/x86_64-w64-mingw32/10-posix/ a.cpp -o a.exe 

混淆效果如下

image-20240319220917273

证实可运行

image-20240319220950472

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值