美文网首页
app代码混淆防止反编译(二)

app代码混淆防止反编译(二)

作者: iOS谢先森 | 来源:发表于2017-08-21 11:53 被阅读0次

刚刚说了使用宏定义的方式来隐藏头文件方法名。感觉比较low,有没有更好的方法来做呢。

创建 confuse.sh, func.list,如图:

确认一下文件路径

cd到项目文件夹,然后执行 chmod 755 confuse.sh,开启root权限。

然后将sh和list文件导入到项目中

编辑sh脚本文件,如下

#!/usr/bin/env bash

TABLENAME=symbols

SYMBOL_DB_FILE="symbols"

STRING_SYMBOL_FILE="func.list"

HEAD_FILE="$PROJECT_DIR/$PROJECT_NAME/codeObfuscation.h"

export LC_CTYPE=C

#维护数据库方便日后作排重

createTable()

{

echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE

}

insertValue()

{

echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE

}

query()

{

echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE

}

ramdomString()

{

openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16

}

rm -f $SYMBOL_DB_FILE

rm -f $HEAD_FILE

createTable

touch $HEAD_FILE

echo '#ifndef Demo_codeObfuscation_h

#define Demo_codeObfuscation_h' >> $HEAD_FILE

echo "//confuse string at `date`" >> $HEAD_FILE

cat "$STRING_SYMBOL_FILE" | while read -ra line; do

if [[ ! -z "$line" ]]; then

ramdom=`ramdomString`

echo $line $ramdom

insertValue $line $ramdom

echo "#define $line $ramdom" >> $HEAD_FILE

fi

done

echo "#endif" >> $HEAD_FILE

sqlite3 $SYMBOL_DB_FILE .dump

编辑完成后保存,然后在pch文件中添加如下代码

#ifdef  __OBJC__

#import "codeObfuscation.h"

#endif

此时编译器会报错。只是因为我们并没有将脚本加入构建资源中,未生成codeObfuscation.h文件。

设置如下:

然后编译,这时候可能会报 expected "filename" or<FILENAME>

可以先把pch文件中#import "codeObfuscation.h" 注释掉,然后手动输入就可以了。

现在配置已经完成,我们可以使用代码混淆了。

首先定义方法

-(void)sample;

-(void)send:(NSString *)string sel1:(NSUInteger)num;

然后在func.list添加

 sample

send

sel1

生成包后,反编译一下,可以参考我之前的那篇

打开viewController.h

可以看到之前定义的方法名已经改为随机代替。demo地址

相关文章

  • 代码混淆

    iOS代码混淆----自动 app 安全(一): 代码混淆防止反编译查看真实的头文件函数声明 iOS安全攻防(二十...

  • iOS 混淆代码方式一(swift篇)

    混淆代码是为了防止别人反编译代码之后,根据函数名或者变量名来窥探你的app,从而了解app的内部实现。 在代码混淆...

  • app代码混淆防止反编译(二)

    刚刚说了使用宏定义的方式来隐藏头文件方法名。感觉比较low,有没有更好的方法来做呢。 创建 confuse.sh,...

  • iOS混淆代码(方式一)

    之所以混淆代码是为了防止别人反编译代码后,根据方法名称来窥探你的APP。从而了解APP内部实现或者破解APP。 混...

  • Android代码混淆后,动画失效的问题

    最近公司考虑保护我们公司自己算法的安全,防止app被反编译,领导要求对app做下混淆。我是没有做过代码混淆的,所以...

  • app代码混淆防止反编译(一)

    刚刚写了如何使用class-tump查看app包头文件,那我们如何使我们保护我们app的安全呢,这里先简单的介绍一...

  • Dex加密(上)

    App通常都会做混淆防止别人反编译,即使反编译出来也是a、b、c这种,但是这种还是会被一些有心的人还原代码,这样我...

  • Android代码混淆干货

    混淆代码能有效防止被反编译,防止自己的劳动成果被别人窃取; ProGuard是一个开源的Java代码混淆器。它可以...

  • Android studio 混淆代码并签名

    app开发的最后阶段就是给app签名,为防止app被反编译时泄露保密信息,可以在签名前给代码做混淆。 一、在mod...

  • Android 混淆简单入门

    为什么要进行混淆 混淆是一种安全措施,防止在App发布以后被人反编译出来直接看到源码。做了混淆处理以后即使反编译出...

网友评论

      本文标题:app代码混淆防止反编译(二)

      本文链接:https://www.haomeiwen.com/subject/rhrcdxtx.html