日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓逆向代码反混淆 Simplify工具 JEB2反混淆神器

發布時間:2025/3/11 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓逆向代码反混淆 Simplify工具 JEB2反混淆神器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【技術分享】Android程序反混淆利器——Simplify工具

https://www.anquanke.com/post/id/85388

發布時間:2017-01-23 17:21:23

問題背景

Android程序代碼混淆是Android開發者經常用來防止app被反編譯之后迅速被分析的常見手法。在沒有混淆的代碼中,被反編譯的Android程序極其容易被分析與逆向,分析利器JEB就是一個很好的工具。但是加了混淆之后,函數、變量的名稱將被毫無意義的字母替代,這將大大提高分析的難度。有的甚至會增加一些冗余代碼,比如下面的例子:

public?void?doBadStuff()?{int?x;int?y;x?=?Integer.valueOf("5")y?=?Integer.valueOf("10")x?=?x?*?y;x?+=?5;x?/=?3;hackYourPhoneLOL("backdoor");x?=?y;y?=?x?+?10;y?/=?2; }

該函數的實際意圖其實就是執行hackYourPhoneLOL("backdoor");,但是通過代碼混淆,增加很多冗余的代碼,?使得實際分析的時候工作量增加。對于代碼混淆,其實一直并沒有一個比較好的思路,也沒有萬能的工具來解混淆,最常見的方式就是用Android?gradle proguard?去嘗試那些用Android gradle proguard混淆過的代碼,但是成功率極其低(比如對于用DexGuard混淆過的代碼)。

?

public?void?doBadStuff()?{hackYourPhoneLOL("backdoor"); }

今天要介紹的工具,就是一個通用的Android程序反混淆工具,雖然在執行效率上不是很高,但是思路清晰,代碼風格好,值得深入學習與優化。下圖是在使用該工具前后,反編譯代碼的對比圖。

?

圖1:代碼解混淆之前

圖2:代碼解混淆之后

可以發現,在代碼解混淆之后,關鍵函數名稱、正則表達式等等字符串都能夠解析出來了,這樣的反編譯結果將非常適合分析人員進一步分析惡意代碼的功能。

這是github地址:https://github.com/CalebFenton/simplify

該工具的核心思路,就是自己模擬的Dalvik虛擬機執行的方式,將待反編譯的代碼執行一遍,獲知其功能后,將反編譯之后的代碼簡化成分析人員便于理解的形式。

?

安裝方式

?由于該項目包含Android框架的子模塊,因此用以下兩種方式獲取代碼:

?

git?clone?--recursive?https://github.com/CalebFenton/simplify.git or git?submodule?update?--init?--recursive

接著,使用gradlew編譯jar文件,當然前提是系統里面安裝過了gradlew

?

./gradlew?fatjar

在成功執行之后,Simplify.jar?應該出現在simplify/build/libs/simplify.jar這里,接著你可以使用以下命令行測試Simplify.jar是否安裝成功

?

java?-jar?simplify/build/libs/simplify.jar?-it?'org/cf'?simplify/obfuscated-example

注:安裝可能出現的問題

由于該工具還在前期開發階段,因此作者也提出該工具不是很穩定,因此可以嘗試使用下面的方式反復嘗試是否成功。

1.?首先,確定分析的smali文件包含不多的method或者classes的時候,可以使用-it命令。

2.?如果因此超過了最大的地址訪問長度、函數調用分析深度、最大的方法遍歷次數等,可以通過改變參數?–max-address-visits,?–max-call-depth,?–max-method-visits.來修正。

3.?如果實在不行,就是用-v參數來報告問題吧。

完整的使用命令在github中有,這里不再贅述。

?

例子分析

這里以github里面的一個引導性的例子為切入,來介紹該工具是如何工作的。在介紹該工具如何工作之前,首先簡單介紹一下該項目里面包含的模塊。

1. smalivm:?該模塊是Dalvik虛擬機的模擬器模塊,主要用來模塊Dalvik虛擬機的執行。它能夠根據輸入的smali文件返回所有可能的執行路徑以及對應的路徑得到的寄存器的值。該模擬器能夠在不知道一個函數參數的情況下進一步分析,它的方式就是將函數中存在分支的所有結果模擬執行一遍,在完全執行完畢之后,該工具會返回程序執行的每條路徑的寄存器的結果,從而便于simplify模塊進一步分析,簡化混淆的代碼。

2. simplify:?該模塊是解混淆的主要模塊,主要基于smalivm的分析結果,簡化混淆的反編譯代碼,得到易于理解的反編譯代碼。

接下來看看例子,該例子是java代碼的形式編寫的。

1.?首先需要新建一個模擬器,其中,SMALI_PATH是自己配置的待分析的smali文件的路徑,在這里就不貼出待分析的樣例main.smali文件,太長了,github的地址。

?

????????VirtualMachineFactory?vmFactory?=?new?VirtualMachineFactory();vm?=?vmFactory.build(SMALI_PATH);

2.?接下來,是使用該工具提供的hook函數的功能將某些函數hook掉,由于有些函數會影響模擬器的外部輸出結果,比如System.out.println(),因此,需要將這些函數hook,以在保證函數正常運行的情況下,得到smalivm正常輸出的結果。

?

MethodEmulator.addMethod("Ljava/io/PrintStream;->println(Ljava/lang/String;)V",?java_io_PrintStream_println.class);

3.?接下來,是執行待分析smali文件的main函數。? ??

??vm.execute("Lorg/cf/demosmali/Main;->main([Ljava/lang/String;)V");

4.?最后,根據不同的函數參數輸入類型,選擇對應的函數分析方式分析Android程序的功能,此外,除了函數本身參數的類型,分析的方式額外的根據自己的需求選擇有參數還是無參數分析,此處的選擇可以不用局限于函數本身的參數類型。有參數的方式能夠加快分析速度,但是往往很多情況下,我們并不知道參數應該設置成什么值,不恰當的值會導致? ?

?executePrintParameter(42);executeParameterLogicWithUnknownParameter();executeParameterLogicWithKnownParameter(10);

注意,由于在無參數分析的情況下,該工具會窮舉所有可能的分支結構,因此需要將前面提到的三個參數的數值設置大一些,分析的時間也將響應的變長。

5. executePrintParameter和executeParameterLogicWithKnownParameter這兩個函數應該好理解,就是將輸入帶入進去分析了。接下分析一下executeParameterLogicWithUnknownParameter這個函數。首先是建立目標函數的簽名,該名稱直接根據待分析的目標函數的簽名而來:

?

String?methodSignature?=?"Lorg/cf/demosmali/Main;->parameterLogic(I)I";

6.?使用smalivm執行在無參數情況設置下的函數,在這個樣例中,smalivm應當輸出兩個結果,這代表了smalivm執行了兩條路徑。

?

ExecutionGraph?graph?=?vm.execute(methodSignature);

7.?獲取smalivm分析得到所有的分析路徑,不同路徑有不同的返回結果,因此能夠輸出所有的返回結果。getTerminatingRegisterConsensus這個函數可以很方便獲得所有返回寄存器的地址,從而得到輸出的結果。

HeapItem?item?=?graph.getTerminatingRegisterConsensus(MethodState.ReturnRegister);System.out.println("With?no?context,?returns?an?unknown?integer:?"?+?item);

?

http://jackzhang.info/2018/08/28/Android-%E5%8F%8D%E6%B7%B7%E6%B7%86%E7%A5%9E%E5%99%A8JEB2%E7%9A%84%E4%BD%BF%E7%94%A8%E7%AE%80%E4%BB%8B/

JEB2工具的基本使用

首先下載jeb2.2.5破解版

下載link: 鏈接:http://pan.baidu.com/s/1bJdWse 密碼:ncr3

Jeb支持Windows,Linux,Macos 系統我這里用的Windows系統所以點擊jeb_wincon.bat,然后在JEB2中打開需要逆向的apk

?

雙擊Bytecode打開smali代碼

?

點擊Bytecode/Hierarchy窗口即可查看包名樹狀圖 樹狀圖排列: 包名->類名

?

雙擊包名下的類名即可查看smali代碼

?

想把smali代碼轉換成java代碼 很簡單 只需右鍵Q即可

?

雙擊方法即可跳轉到方法的定義 點擊方法按x鍵可以查看方法的調用

?

?

雙擊Manifest即可查看AndroidManifest.xml

以上就是JEB2的基本用法,接下來重點來了

JEB2反混淆腳本

反混淆腳本思路

許多APK開發商為了在崩潰時保存源文件類名、行號等信息會在APK混淆時添加以下規則保留源文件信息.

(注意:若APK沒有保留這些源信息時則無法反混淆)

-keepattributes SourceFile,LineNumberTable

這樣我們在看Smali時就能在(JEB中稱為)字段中看到原始類名信息.如下圖所示:

?

JEB2.2.x是默認不顯示這些調試信息的可以根據以下步驟在設置中打開:Edit -> Options -> Engines -> 修改ShowDebugDirectives的值為true

這樣我們就可以在JEB2中根據每個類的原始信息進行批量重命名達到反混淆的效果。

腳本下載地址:

https://github.com/S3cuRiTy-Er1C/JebScripts

加載腳本之前先需要在 jeb225/scripts/目錄下安裝Jypthon環境,具體步驟如下:

Setting up Jython:

  • Download a stand-alone Jython package from http://www.jython.org/downloads.html We recommend either version 2.5 (fastest) or version 2.7 (latest)
  • Drop the downloaded ‘jython-standalone-???.jar’ file in the scripts/ sub-directory located in your JEB installation directory
  • Make sure that the client property ‘.ScriptsFolder’ refers to that directory (it is the case by default; use ‘Edit/Options, Advanced…’ to verify this)

我這邊下載的是?jython-standalone-2.5.4-rc1

完成后打開JEB2 -> File -> Scripts -> Run Scripts -> 選擇從上面下載的 JEB2DeobscureClass.py腳本

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的安卓逆向代码反混淆 Simplify工具 JEB2反混淆神器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲图片另类小说 | av大西瓜 | 国产美女明星三级做爰 | 极品美女扒开粉嫩小泬 | 亚洲AV综合色区无码国产播放 | 国产在线一二区 | 亚洲一区二区伦理 | 巨大黑人极品videos精品 | 在线成人毛片 | 亚洲av无码一区二区三区性色 | 国产成人精品影视 | 国产精品尤物视频 | 欧美日韩亚洲成人 | 反差在线观看免费版全集完整版 | 亚洲免费观看高清完整版在线 | 欧美日韩一区二区在线播放 | 国产精品不卡 | 日韩一区二区三区精品 | 男人天堂社区 | 欧美69式性猛交 | 91精彩视频在线观看 | 91porny九色 | 国内精品久久久 | 精品少妇人妻av免费久久洗澡 | 国产一区二区三区免费播放 | 兄弟兄弟全集免费观看 | 欧美一级二级三级视频 | 特黄特色特刺激免费播放 | 亚洲成人第一网站 | 在线观看小视频 | 亚洲.www | 亚洲国产精品第一页 | 国产片免费| 日本a级网站 | 麻豆传媒在线免费 | 穿情趣内衣被c到高潮视频 欧美性猛交xxxx黑人猛交 | 免费在线观看成人av | 精品久久一区二区三区 | 成人一级黄色片 | 免费观看黄色一级视频 | 性做久久久久久久 | 国产精成人 | 美女张开腿让男人操 | 日日爱夜夜操 | 中文字幕福利 | 99精品视频在线看 | 色就是色亚洲色图 | 一区二区三区日韩电影 | 日本午夜影视 | 亚洲一区二区三区观看 | 色哟哟免费观看 | 中文字幕免费视频 | 亚洲中文在线一区 | 自拍偷拍20p | 五月婷婷深爱 | 婷婷开心激情 | 欧美中文字幕在线播放 | 天堂精品一区二区三区 | 亚洲精品国产精品乱码不卡√香蕉 | 美女被草网站 | 欧美日韩国产片 | 最新91视频| 2019国产在线| 日韩喷潮 | 伊人激情影院 | 在线观看亚洲网站 | 91美女在线 | 91综合在线 | 成人免费看类便视频 | 操碰视频| 国产欧美亚洲一区 | 美景之屋电影免费高清完整韩剧 | √天堂资源地址在线官网 | 国产内射老熟女aaaa∵ | 久久精品一区二区三区黑人印度 | 老师的肉丝玉足夹茎 | 欧美视频在线观看一区二区三区 | 精品国产影院 | 91成年人网站| 日韩日韩日韩日韩日韩 | 三女同志亚洲人狂欢 | 欧美a级在线免费观看 | 91精品人妻一区二区 | 国产精品视频999 | 日韩在线不卡视频 | 精品在线观看视频 | 欧美日韩国产色 | 麻豆传媒网页 | 精品国产一区三区 | 国产一区二区自拍视频 | 亚洲www色 | 精品人妻一区二区三区久久夜夜嗨 | 日日夜夜一区 | 日韩av一二三 | 亚洲熟女少妇一区二区 | 成年人的黄色片 | 国产精品永久免费 | 理论片大全免费理伦片 | 国产精品久久久久久久久久小说 |