使用第三方没啥难度,牛逼的还是这些 搞混淆 防止破解的人呐!!!
另外网上某些教程说的太麻烦复杂了,我都是直接下载孤挺花和obfuscator-llvm/一样的用法,编译之后替换bin目录的文件就行了,不需要那么复杂的改那么多东西,而且那么多复杂的步骤没缕清关系就要调到坑里面去了。

github https://github.com/obfuscator-llvm/obfuscator

git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git
 mkdir build
 cd build
cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator/
 make -j7
//or  
cmake -DCMAKE_BUILD_TYPE:String=Release -DLLVM_INCLUDE_TESTS=OFF ../obfuscator/prebuilt/linux-x86_64目录下。



make -j5

编译大概需要30-90分钟。

编译完成之后在build目录会发现有很多文件,其中包含了bin文件,
我是把这整个目录覆盖到/ndk/toolchains/llvm
把build目录里的所有头文件也拷贝到自己项目中
目录结构/lib/clang/4.0.1/include/

注意事项 升级cmake版本,

效果如下:

效果是卡成狗了, ida分析头疼了。

image.png

源代码

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

__attribute((__annotate__(("fcf"))))
__attribute((__annotate__(("fla")))) //模糊处理
__attribute((__annotate__(("icf"))))
__attribute((__annotate__(("sbb"))))
void test(){
int a=0;
int b=1;
        printf("abcdefg %d ",a);
}

void test1(){
int a=0;
int b=1;
        printf("test1 %d ",a);
}
int main2(int argc, char** argv) {
  int a = atoi(argv[1]);
  if(a == 0)
    return 1;
  else
    return 10;
  return 0;
}

void test21(){
int a=0;
int b=1;
        printf("test22 %d ",a);
}

int main(int argc, char** argv) {
  int a = atoi(argv[1]);
  if(a == 0)
    return 1;
  else
    return 10;
  return 0;
  
}

android make

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libSecShell
LOCAL_LDLIBS := -lm -llog 
LOCAL_SRC_FILES := test.c

define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
$(warning localdir $(LOCAL_PATH))
LOCAL_C_INCLUDES+= $(call walk, ${LOCAL_PATH}/include)
LOCAL_C_INCLUDES+=${LOCAL_PATH}/include/stddef.h
$(warning LOCAL_C_INCLUDES $(LOCAL_C_INCLUDES))
#-mllvm -bcf 的子选项, 虚假控制流程 -mllvm -bcf_prob=40 模糊概率百分之40  -mllvm -bcf_loop=3
#LOCAL_CFLAGS := -mllvm -bcf -mllvm -boguscf-prob=100 -mllvm -boguscf-loop=1 -mllvm -sub -mllvm -fla -mllvm -perFLA=100

#-mllvm -fla -> -mllvm -split -mllvm -split_num=3 如果激活了传递,则在每个基本块上应用3次。默认值:1
#控制流扁平 ,虚假控制流. 控制流展评    https://github.com/obfuscator-llvm/obfuscator/wiki/Features
LOCAL_CFLAGS += -mllvm -sub -mllvm -sub_loop=3 -mllvm -fla -mllvm -split -mllvm -split_num=3 -mllvm -bcf -mllvm -bcf_prob=90 -mllvm -bcf_loop=4
LOCAL_CPPFLAGS += -mllvm -sub -mllvm -fla  -bcf -mllvm -bcf_prob=90 -mllvm -bcf_loop=3
include $(BUILD_SHARED_LIBRARY)
# __attribute((__annotate__(("fla")))); 模糊处理某个函数.
image.png

字符串混淆

字符串混淆用孤挺花的
混淆后f5发现字符串已经不见了。。破解难度加大了。

image.png

字符串混淆的代码地址 https://github.com/GoSSIP-SJTU/Armariris
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐