dex方法隱藏后的反編譯和運(yùn)行時(shí)效果_第1頁
dex方法隱藏后的反編譯和運(yùn)行時(shí)效果_第2頁
dex方法隱藏后的反編譯和運(yùn)行時(shí)效果_第3頁
dex方法隱藏后的反編譯和運(yùn)行時(shí)效果_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、陸爐;刪唸血上,忻畔T葉匡瑯機(jī)堆:?:i-,r.j;lBB:諛關(guān);573TDiHi既t;:71:iimtest痂72:i?o想陀fee辭占4os.,72e后面有至少個(gè)參數(shù)參數(shù)字?jǐn)?shù)(位)方法引用索引(位)參數(shù)寄存器(每個(gè)寄存器各占位)dex方法隱藏后的反編譯和運(yùn)行時(shí)效果隱藏方法后源碼:解釋為:dee查看字節(jié)碼:為要看指令的字節(jié)碼格式,解釋器是如何做指令和參數(shù)解釋的官方文檔:【】、【edexee】字捉黠険牖iMs遇菲藝施離瀟:戈舄瀉)哇羯護(hù)諾肉iw-仙出朗訕臓-皿:就頭厲進(jìn)讎(茹存卻i忒匕吐血兩仙汛也不礙叭蘭訕od_id弭劉魴韻.庭i恥-曙廠咼臓淒E撻施迄2星用類中制目瞰hoUdHEJffl站,i

2、nM皆門伽II菲片利沸社扳本擱頑議馥聞文肛,頑耐血託引腿匸蕊.膻用1池洽山仙吐訓(xùn)目訪瞬葩本萌磯監(jiān)文#,無知耐吐13呈狂兵尬,intcke-direct用于麗豐static註輪;也旄切.羯上祠議皴花4F伽:吸苗赫艇關(guān),UM洽也出用于旺咼tic蕊値翔1瓏骷電-ick-iiterfac5,肝関用interfaze電雄總連屋聯(lián)荊亂逸上我弼I用intHfK&teurthcd-il笫:龍細(xì)拒壽薊離世嶷帀.礎(chǔ)軀聯(lián)燮再看invoke-vitrual這類指令的id是35c看35c這類指令的格式A|3(CDE辺謝|岡即垃叫,E.忙謁小趣冊E:EC|肛岬帕叩.:E.鬥3淞就嗆扣習(xí)即叫叩.:E.忙謁宙p唯冊EfMpi

3、*D.,E.1.,:lki幽冊BE;opivD./E,UndWE粧如kindDH:i間即岡kind陰班iH/cpJ.kiiidEE騷谿融歸甑敬宙-看看ID的含義大多數(shù)格式ID包含三個(gè)字符:前兩個(gè)是十進(jìn)制數(shù),最后一個(gè)是字母。第一個(gè)十進(jìn)制數(shù)表示格式中6位代碼單元的數(shù)量。第二個(gè)十進(jìn)制數(shù)表示格式包含的最大寄存器數(shù)量(使用最大值是因?yàn)槟承└袷娇扇菁{的寄存器量為可變值),特殊標(biāo)識(shí)7”表示已對寄存器的數(shù)量范圍進(jìn)行編碼。最后一個(gè)字母以半助記符的形式表示該格式編碼的任何其他數(shù)據(jù)類型。例如“21t”格式的長度為2,包含一個(gè)寄存器引用,另外還有一個(gè)分支目標(biāo)。所以35c=有3個(gè)16位代碼單元(3個(gè)“單詞空格分割),最

4、大支持5個(gè)寄存器數(shù),c表示其他數(shù)據(jù)類型為常量池索引3&c血樹引按位布局A|G|opBBBBF|E|D|C每個(gè)以空格分割的區(qū)域被稱作單詞”每個(gè)單詞占16位T豎線用來平均分割該單詞內(nèi)的位寬“op”一詞用于表示格式內(nèi)八位操作碼的位置解析一下:這里有3個(gè)單詞,每個(gè)單詞16位(2個(gè)字節(jié)),因?yàn)槭切《诵颍孕枰匦掳催m合人類閱讀的方式排列一下6E104E320100就成了106E324E0001第一個(gè)單詞區(qū)域:A|G|op=A(4位)G(4位)op(8位)1|0|6E=A=1,G=0,op=6Eop=6E=Invoke-vituralA=1G=0第二個(gè)單詞區(qū)域:BBBB=324E第三個(gè)單詞區(qū)域:F|E|

5、D|C=0001F=0E=0D=0C=1根據(jù)A=1其操作碼是最后整理一下opvC,kindBBBB等于op=6E=invoke-vitralC=1,那么vC=v1BBBB=324E,那么kindBBBB=kind324E整個(gè)指令為invoke-vituralv1,kind324E現(xiàn)在看起來和backsmali解釋的非常相似了根據(jù)B:方法引用索引(16位)那么我們?nèi)タ纯?24E=12878(十進(jìn)制)的方法是什么仃LCtlT酎牡師飛卅對上疋畀htconi.aj.:Emol.MainMrtty.ftir2ljU5port2c5j_i(lj(Z&EC::的曲.ceiiK.Mavusport網(wǎng)inti:

6、uintram訂帶闆AE氣吃所以在執(zhí)行階段可以看出即使把class_defs中的方法隱藏后在解析指令的時(shí)候,是根據(jù)方法索引在method_ids里去找的方法,然后根據(jù)方法名稱和簽名打印出smali的指令的人類可讀命令字符串就完事了但執(zhí)行的時(shí)候會(huì)拋出異常Process:E3i.ei.P1D:22458.lang.JaSJElrME-hodErrar牴nrzualii2;:IineIessLcwex/kn&VRai也mt打crhs昭兀rdesses血心off誠皿丿亡蟲也土!旳舊門irjd帀曲胃氐,拒咄-址第巴即a:C31.2X.応嘛犧加卍就:刑.onZliKF苜辻!住咗口1:a;andni:.jg

7、rrsmQickP.i.ihc5637;a:androi:./ieNPrfumdick.run(j(jvjEvai2233aaiirai;胚-hfandlEr,:1血1恤出辿:上代掃旳:T51ia:aiiroi:.ce.handler?itclHe5age(1:cr.iava:35l-a;andrai:.k.Looper.hgiLwcEivF月:匕4ia:androi:百甲點(diǎn)YFityThr泣.min:iirticty7readJava:61近Ia;iaca.1sr|.reflecz.4?tpd:.irvols;Hrti*rNe:M;估:計(jì)是找到mehod對象后,根根據(jù)給出的才吃譏昨找到cas

8、s,然后根據(jù),j証:糊:數(shù)名(和函數(shù)簽名irrErwl衛(wèi)忑圧北山社疋|:訃印北11讓Je“應(yīng):】4醇船23:11::52253-22+5?;cci.s.hpIE.HeiorjFilr:rfeiwri!Fil2.-?Ejizet;calls;jtileashnirtillcffn2.相同method_ids的索引號(hào)(也就是324E)去找該class下的vitur方法列表(因?yàn)檫@里是nvoke-vitura指令)中匹配的方法但是發(fā)現(xiàn)找不到(因?yàn)樵瓉韚n2方法指向的方法索引被改為為fun1),就拋出異常(具體要看虛擬機(jī)如何執(zhí)行invoke-viturl指令的)反編譯:apktool會(huì)提示#dupli

9、atemethodignord,并反編譯出fun1的代碼jeb不提示異常,并解析出un1的代碼2次androidstudio不提示異常,但是看得到un2的導(dǎo)出(斜體字體,類似依賴的外部方法),但是無法查bytecodedex2jar會(huì)提示duplicatedmethodida不提示異常,看不到fun2有export,也沒有找到fun2的代碼i:00E:3:724芒=乂乂=i:00E:M3:j24芒顒創(chuàng)0他碣DOE翩:伽.sh3t;tKunberofrenters:孫1眥:癒:恣.shj-t.tSizeafiBxtergs(iivonfc):4k1眥翩:誑.shartitSiieof:-tpit

10、args(iiocs;:9k3眥:獅:愆.alwrt*hunber-jftnjteis:沁i:DOE::Z2C.int?tDebuglife眥:癒:麗.irt2*iixjf:jrtMME:ii15ij?山y(tǒng)gSt-n::Fn;rcidutl.bg1irts:i.-uSlirg,?總叭Stiniiai:5e:l如弭C1.jnt:丄*;、”ri:i、ipiNc.血燉協(xié)!Lun.,迪4.法,但可以更進(jìn)一步修改,既然刪掉了方法的定義,那不如也把調(diào)用該方法的相關(guān)字節(jié)碼也修改掉,讓他指向一個(gè)別的方法,這樣DexMethodID也可以刪掉或者修改成具有混淆意義的方法了。因?yàn)榧虞d這個(gè)dex前,總要修復(fù),所以這個(gè)dex其實(shí)只是個(gè)可以任意修改,具有dex外表用于迷惑反編譯器,而實(shí)際上卻像是個(gè)分卷壓縮文件中的一部分文件(帶有一半的正確信息),還有另一半需要范個(gè)dex本身的一些可以第一次正常運(yùn)行的法里(無論java層還是native層,就算native,首次加載也是在java層代碼被首次運(yùn)行后才會(huì)加載)將完整的dex還原,或者在運(yùn)行時(shí),根據(jù)需要運(yùn)行到的方法動(dòng)態(tài)還原(類似ELF.pltlazyLoad,在1級還原中將方:內(nèi)的字節(jié)碼指向一個(gè)自定義的動(dòng)態(tài)連接器,攜帶可以標(biāo)識(shí)方法簽名的參數(shù),在需要執(zhí)行時(shí)動(dòng)態(tài)釋放出字節(jié)碼然后執(zhí)行2級還原),這樣如果在運(yùn)行時(shí)沒有執(zhí)行到的方法,始終不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論