使用第三方没啥难度,牛逼的还是这些 搞混淆 防止破解的人呐!!!
另外网上某些教程说的太麻烦复杂了,我都是直接下载孤挺花和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分析头疼了。
源代码
#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")))); 模糊处理某个函数.
字符串混淆
字符串混淆用孤挺花的
混淆后f5发现字符串已经不见了。。破解难度加大了。
字符串混淆的代码地址 https://github.com/GoSSIP-SJTU/Armariris
所有评论(0)