亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Jadx在Android逆向中的應(yīng)用

        2022-04-29 00:44:03劉龍錦張志杰梁世民
        計(jì)算機(jī)應(yīng)用文摘 2022年18期
        關(guān)鍵詞:逆向

        劉龍錦 張志杰 梁世民

        關(guān)鍵詞:Android;Jadx;逆向

        1引言

        Jadx工具是一款反編譯利器,支持命令行和圖形化界面,能夠以最簡單的方式完成APK的反編譯工作,反編譯后的代碼可閱讀程度極高,同時(shí)擁有強(qiáng)大的搜索定位功能,可以極大地提高反編譯后閱讀代碼及尋找關(guān)鍵代碼的效率。本文以句讀APP為例,對Android APP逆向進(jìn)行了研究。

        2環(huán)境介紹及逆向思路

        本文使用的句讀APP版本號為V4.5.0,在豌豆莢上發(fā)布時(shí)間為2022年01月13日。抓包工具為Progress Telerik Fiddler Classic V5.0。模擬器為夜神Android模擬器V7.0.3.0(安裝Xposed框架,JustTruseMe模塊)。

        逆向的思路一般為:(1)對應(yīng)用進(jìn)行抓包分析;(2)使用JADX反編譯APK程序;(3)使用JADX尋找分析關(guān)鍵函數(shù);(4)使用編程語言還原通信協(xié)議算法。

        3抓包分析

        句讀APP在防抓包層面未做有效的防護(hù),使用常規(guī)抓包環(huán)境即可抓取,對sentences/random接口進(jìn)行抓取,得到以下數(shù)據(jù)。

        GET:

        https:

        ∥judouapp. com/api/v2/sentences/random?

        newbie= true&system_version=7.1.2&platform=android&device_ type=MI9&app—key=fd13a4la-a194-4650-aOb2-56ld4b3187lc&device—id=458d834d-ee47-7f34-c5d4-8cle6bf825f3&signature= 7a602ae13dbfda013f23f5311948134l&version= 4.5.O×tamp= 1657659250&version_code= 1057&channel= ch_huawei

        經(jīng)多次抓取發(fā)現(xiàn),句讀APP的API接口公共參數(shù)為system—version, platform, device—type,app _key,device_ id,

        signature,

        version,

        timestamp,

        version一code,channel。signature的值為動態(tài)計(jì)算,timestamp的值為當(dāng)前時(shí)間戳,其他參數(shù)為固定值。抓包過程中并未發(fā)現(xiàn)上傳日記等操作,可以暫時(shí)推斷句讀APP的風(fēng)控系統(tǒng)主要是對signature參數(shù)值計(jì)算,計(jì)算正確值即可獲取服務(wù)端正常的數(shù)據(jù)返回。

        4反編譯APK

        使用Jadx工具打開句讀APP,通過Jadx返回的源文件列表判定句讀APP使用了Tencent的安全加固服務(wù),需要進(jìn)行脫殼后才能得到Dex文件,使用FDex2的Xposed進(jìn)行脫殼得到對應(yīng)的Dex文件后導(dǎo)出到桌面,拖人Jadx進(jìn)行分析即可。由于反編譯后的Dex文件較多,在分析時(shí)會稍微麻煩,因此得到啟示:使用加固平臺及對APP進(jìn)行多Dex文件處理可以提高APP的安全性,延緩攻擊者破解的速度。

        5分析關(guān)鍵函數(shù)

        多數(shù)APP使用okhttp庫進(jìn)行網(wǎng)絡(luò)請求,okhttp庫處理公共參數(shù)的方法一般為實(shí)現(xiàn)Interceptor接口,所以可以直接搜索Interceptor關(guān)鍵字,從而快速定位添加公共參數(shù)代碼位置[1]。通過分析定位到句讀APP添加公共參數(shù)的代碼的dex文件,使用Jadx工具打開該文件,搜索關(guān)鍵字“Interceptor”,得到圖1所示數(shù)據(jù)。

        排除okhttp開始的節(jié)點(diǎn),最終只剩下tech開頭的兩個(gè)節(jié)點(diǎn),再根據(jù)關(guān)鍵字network推斷最后一個(gè)節(jié)點(diǎn)可能性最大,進(jìn)入tech.caicheng. judourili. network.g類中,閱讀代碼,在intercept方法中發(fā)現(xiàn)了相關(guān)代碼,如圖2所示。

        signature參數(shù)由aVar.c方法計(jì)算得出,此方法傳人了兩個(gè)參數(shù),一個(gè)是固定字符串,另外一個(gè)為HashMap類型的容器。首先,確認(rèn)HashMap的數(shù)據(jù)內(nèi)容,閱讀tech.caicheng.judourili. network-g類的代碼,通過Jadx分析出HashMap的內(nèi)容為兩種形式,一種是CET方式請求數(shù)據(jù),另一種是POST方式提交數(shù)據(jù)。如果是CET方式提交數(shù)據(jù),則把URL中的鍵值對參數(shù)拆分并依次加入HashMap;如果是POST方式提交數(shù)據(jù),則把RequestBody中的鍵值對參數(shù)依次加入HashMap。其次,判斷是否已經(jīng)登錄,如果已經(jīng)登錄則把token加入HashMap。最后,把公共參數(shù)加入HashMap即可。

        確認(rèn)aVar.c方法的代碼,閱讀反編譯后的代碼得知aVar為s.a類型,從導(dǎo)包代碼中確認(rèn)s.a類型來自tech.caicheng.judourili. util.s類中,但是在此Dex文件中并未發(fā)現(xiàn)有對應(yīng)的util包,由此推斷util包存放在別的Dex文件中。經(jīng)過一個(gè)個(gè)文件的打開尋找,確認(rèn)tech.caicheng.judourili. util包存放的Dex文件后使用Jadx打開。

        閱讀該Dex文件代碼,分析出c方法的大致邏輯為判定參數(shù)str,hashMap不為空之后,取出hashMap的鍵名做數(shù)組排序,再將鍵值以“鍵名=值”的形式加入arrayList,最后加上secret_key= strc此處的str為參數(shù)str也就是一個(gè)固定字符串),全部加入數(shù)組之后,再調(diào)用m(1())方法,所以我們需要繼續(xù)向下閱讀I(1())方法。

        l方法的代碼比較簡單容易理解,遍歷list,在每一個(gè)元素后面加上字符串“&”,最后返回一個(gè)字符串。

        m方法代碼也比較容易理解,大致的流程為:判斷str參數(shù)不為空,長度不為0之后,進(jìn)行md5加密,返回加密后的字符串,該字符串就是signature參數(shù)的值。在代碼中看到有一行代碼為byte[]bytes=str.getBytes( d.a),此處需要確定d.a參數(shù),在m方法中并未發(fā)現(xiàn)有定義d.a,可以推斷d.a為類成員變量或者為其他類的靜態(tài)常量,在導(dǎo)包代碼處發(fā)現(xiàn)了導(dǎo)包語句import

        kotlin. text.d,可以確定d.a為系統(tǒng)常量,再根據(jù)getBytes方法所需要的參數(shù)可以斷定d.a為字符串類型,即應(yīng)該是文字的編碼格式,大概率為utf-8,最終的值在還原算法是再確認(rèn)即可。至此,加密的流程已經(jīng)走完,接下來還原該參數(shù)的計(jì)算方法。

        6還原加密算法

        上述分析步驟得出計(jì)算signature參數(shù)主要需要還原m,l,c三個(gè)方法,得益于Jadx強(qiáng)大的反編譯功能,反編譯后的代碼還原程度非常高[2],接近于源代碼,所以還原加密算法大致的流程為:復(fù)制Jadx中的代碼,導(dǎo)人需要的包,處理程序中的錯(cuò)誤即可。

        (1)還原m方法,在Jadx中復(fù)制m方法代碼,手動修改d.a為UTF-8,去除i.d方法的代碼、@NotNull代碼之后,最終還原的代碼為:

        (4)對還原的代碼進(jìn)行測試,測試需要構(gòu)建數(shù)據(jù)請求,參照文中抓包數(shù)據(jù)的例子構(gòu)建即可,只需要判定加密后的字符串與抓包的加密字符串是否一致,發(fā)送請求后句讀APP的服務(wù)器正常返回?cái)?shù)據(jù)即可。句讀APP請求的Header參數(shù)中并未有其他值,爬取句讀APP的數(shù)據(jù),拼接好URL發(fā)送到句讀APP的服務(wù)器即可,測試代碼如下:

        7結(jié)束語

        得益于Jadx工具強(qiáng)大的反編譯功能,面對加密算法在Java層的應(yīng)用,Jadx可以方便地還原加密算法。如果攻擊者有一定的編程經(jīng)驗(yàn),還原APP的加密算法所需要的時(shí)間不會太長。從本次逆向分析得到了很多寶貴的經(jīng)驗(yàn),為設(shè)計(jì)APP的風(fēng)險(xiǎn)控制系統(tǒng)提供了必要的理論實(shí)踐基礎(chǔ),在設(shè)計(jì)移動風(fēng)險(xiǎn)控制系統(tǒng)時(shí),APP端應(yīng)該著重注意以下事項(xiàng):(1)對于生成的device_id應(yīng)該做合法性校驗(yàn),限制每一個(gè)device_id單位時(shí)間內(nèi)請求次數(shù);(2)應(yīng)在合理、合法范圍內(nèi)收集用戶的行為數(shù)據(jù)并上傳到服務(wù)器分析,從而判定用戶發(fā)送的請求是否合法;(3)盡可能不要使用常規(guī)的MD5加密算法進(jìn)行加密,可以使用AES,RSA等高級加密算法;(4)簽名加密算法盡量放到SO層計(jì)算,在SO層也要做好代碼混淆以及采用OLLVM等防護(hù)手段。

        猜你喜歡
        逆向
        逆向而行
        逆向思維天地寬
        中華詩詞(2020年12期)2020-07-22 06:34:00
        逆向解答
        逆向工程在塑料產(chǎn)品及其模具設(shè)計(jì)中的應(yīng)用
        中國塑料(2014年1期)2014-10-17 02:46:41
        逆向工程技術(shù)及應(yīng)用
        亚洲精品国产第一综合色吧| 亚洲综合伦理| 成人影院免费视频观看| 久久精品国产亚洲av影院毛片| 24小时日本在线视频资源| 少妇邻居内射在线| 亚洲AV无码日韩综合欧亚| 亚洲国产精品久久久婷婷| 国产又色又爽无遮挡免费软件| 国产精品卡一卡二卡三| 亚洲AV日韩Av无码久久| 国产天堂av在线播放资源| 久久久中文久久久无码| 亚洲精品无码人妻无码| 欧美日韩国产在线人成dvd| 蜜桃视频一区二区三区四| 国产精品精品自在线拍| 国产午夜影视大全免费观看| 亚洲在线一区二区三区四区| 亚洲国产综合精品中久| 丰满多毛的大隂户毛茸茸| 国产黑丝在线| 丝袜美腿亚洲综合玉足| 日本饥渴人妻欲求不满| 欧洲成人午夜精品无码区久久| 亚洲网站免费看| 国产免费成人自拍视频| 人妻仑乱a级毛片免费看| 国产精品无需播放器| 久久中文字幕av第二页| 午夜秒播久久精品麻豆| 啪啪无码人妻丰满熟妇| 成年男人裸j照无遮挡无码| 亚洲一区二区三区成人网| 国产精品免费_区二区三区观看| 亚洲日韩专区在线视频| 亚洲一区二区三区高清视频| 强开小婷嫩苞又嫩又紧视频| 亚洲av无码一区二区三区性色 | 亚洲区福利视频免费看| 亚洲国产精品久久久av|