app代碼混淆防止反編譯(二)

剛剛說(shuō)了使用宏定義的方式來(lái)隱藏頭文件方法名。感覺(jué)比較low,有沒(méi)有更好的方法來(lái)做呢。

創(chuàng)建 confuse.sh, func.list,如圖:

確認(rèn)一下文件路徑

cd到項(xiàng)目文件夾,然后執(zhí)行 chmod 755 confuse.sh,開(kāi)啟root權(quán)限。

然后將sh和list文件導(dǎo)入到項(xiàng)目中

編輯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

#維護(hù)數(shù)據(jù)庫(kù)方便日后作排重

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 "http://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

此時(shí)編譯器會(huì)報(bào)錯(cuò)。只是因?yàn)槲覀儾](méi)有將腳本加入構(gòu)建資源中,未生成codeObfuscation.h文件。

設(shè)置如下:

然后編譯,這時(shí)候可能會(huì)報(bào) expected "filename" or<FILENAME>

可以先把pch文件中#import "codeObfuscation.h" 注釋掉,然后手動(dòng)輸入就可以了。

現(xiàn)在配置已經(jīng)完成,我們可以使用代碼混淆了。

首先定義方法

-(void)sample;

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

然后在func.list添加

?sample

send

sel1

生成包后,反編譯一下,可以參考我之前的那篇

打開(kāi)viewController.h

可以看到之前定義的方法名已經(jīng)改為隨機(jī)代替。demo地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • class-dump 可以很方便的導(dǎo)出程序頭文件,不僅讓攻擊者了解了程序結(jié)構(gòu)方便逆向,還讓著急趕進(jìn)度時(shí)寫(xiě)出的欠完善...
    無(wú)灃閱讀 660評(píng)論 1 0
  • 前言: 在iOS移動(dòng)端開(kāi)發(fā)中很多時(shí)候在考慮安全問(wèn)題的時(shí)候只是單純的請(qǐng)求體加密,但是在一個(gè)用戶量級(jí)很大的App上就會(huì)...
    退役程序猿閱讀 6,331評(píng)論 2 17
  • 然后將混淆腳本寫(xiě)入confuse.sh文件里面 !/usr/bin/env bash TABLENAME=symb...
    莼藍(lán)Oo閱讀 1,572評(píng)論 2 1
  • 1.終端 cd Desktoptouch confuse.sh 隨便找個(gè)編輯器打開(kāi) confuse.sh文件??截?..
    客三消閱讀 2,036評(píng)論 2 50
  • 好困,看看手機(jī),哎呀,已經(jīng)十二點(diǎn)了,睡了睡了…… 早早的起了床,吃完早飯飛奔到教室,占好了第一排的位...
    張潔琳閱讀 961評(píng)論 3 5

友情鏈接更多精彩內(nèi)容