網易視頻云:Android分析破解-秒脫360加固大法_第1頁
網易視頻云:Android分析破解-秒脫360加固大法_第2頁
網易視頻云:Android分析破解-秒脫360加固大法_第3頁
網易視頻云:Android分析破解-秒脫360加固大法_第4頁
網易視頻云:Android分析破解-秒脫360加固大法_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、網易視頻云:android分析破解秒脫360加固大法網易視頻云是網易傾力打造的一款基于云計算的分布式多媒體處理集群和專業(yè)音視頻技術, 提供穩(wěn)定流暢、低時延、高并發(fā)的視頻直播、錄制、存儲、轉碼及點播等音視頻的paas 服務。下面,網易視頻云技術專家與大家分享一則技術討論文章:android分析破解-秒脫 360加固大法。android相比ios ,安全問題往往比較突出,各種漏洞和破解層出不窮。對破解方法的 了解,能在開發(fā)中進行預防,加強應用的安全性。本系列文章會對android應用的破解 保護兩方面做個探討,給開發(fā)的同學一些借鑒。andoid開發(fā)的同學可能會遇到需要做競品分析的情況,apk加固常

2、常會成為分析的障 礙。360渠道做為android應用分發(fā)的最大渠道,很多apk都使用了 360加固。本文就來 聊聊如何過掉這個坑。360加固后的apk ,在arm設備上首先會將assets目錄下的libjiagu.so拷貝到files 目錄下,然后通過libjiagu.so動態(tài)解密并加載原始dex運 myapplication_360jiagu.apk win rar文件(f)命令(c)工m(s)收藏耒(0)選項(n)辛助(h)a j f掃描病毒注釋目解田旨0鬱由舒心倉 添加 缽壓到 測試 查看刪除查找 向導 信息| myapplication_360jiagu.apkassets zip

3、壓縮文件,解包7:小為 1,695,485 字節(jié)名稱lj libjiagu.soiibj4gu-x86.so犬小壓縮“小注文件耒280,036261,943 so 文件368.964354.028 so 文件要對apk脫殼,首先要分析libjiagu.so實現(xiàn)。而該so做了二進制加殼。那么現(xiàn)在首先要做的事就是先把so的殼給脫了。通過oloeditor查看libjiagu.so結構可知,其init_proc和init_array都無實質功能,真正的解密放在jni_里面。:uu0q66m :88886636 :0fl»0663u :0000663c :000066>l0:u60o6

4、6m4:000q66u8 :0u0»66mc:mommc:m8066<<c :60606650 :00006654 :0她66八:080966&4jh1 onload: dain xrlf:o(imb朋0820e9sthfdspt» <r0>do018ff? m 00 8fl f?adrirfl,lr>c1.廠oh00hoe2subro,ro, uh10ff2fe1 一 _ _ _ _bxro1oc 667u9206ro89rsceqsr6rro, r2400300q9andeqro,ro, rq.asru610c.664c:dain

5、xhli :58朋的andeqr6rr0f r8,asr r3jmrdf81 dhfdspf> <r0>=subhout i n ejni_函數里有非常多的垃圾足熾專扌旨令干擾分析,后面還會有動態(tài)解密的函數運行,如果檢測到調試器會把動態(tài)函數置成非法代碼,使程序crashstructwtxview-rc5佃69c2c70402de9sthfdsp? <rh-r6tlr>51b09c300100e1hour0.r151b09c3408d01|0e2sub化spf 118s1b09c380140ase1hour札r151b09c3c0250ase1hour5tr251b

6、09c«l00210a0e1hour1 wr251b09m4#520aqe3hour2f55(809580360ase1mour6.r3s1b09chc10efffeb8lunkj1b 0589451bo9c50616078e3chhr0.ii51b09cs40800688eqloc51botc«8s1b09c2c5佃b9c2c51b09c2c5佃09c2csub 51bo9c2cu j ud xrefisursrd s1b03600 j !r1 s1bo3o0u u dr2 00000230 ur3 51b0c1«>i w 1r<4 400c1228

7、 m i!r5 51b03w0 w <!r6 512899a8 j dr7 0o6fooo2r8 5128fc98 m dr9 bed1b528 u r1os1b0c18«i w in 一 nnoaoaonjsasl51b09c580600a0e1hour0fr651b09c5coh1090e5ldrr1t|r0-51b09c60082090esldrr2,(r0,«s1b09c64qc3690e5ldrr3.(ro.boxc)51biwc6800nn90e5ldrr0eirq51b09c6c(me0a0eihouir,rbs1b99c703eff2fi 1blxlr

8、51b09c7m(m00a0e1hourd.r*51b09c780510a0e1hour1,rs51b09c8851b09c88loc51b09c8«51b09c88 08 do 8d e2 addsp51b09c8c 79 80 8d e8 ldhfdsp51b09c8c: tnd nf i unctions1b09c8ctep.ygtcauuu 九 爲讐比誰靂豊 啟畑沏b/1ib/1ib/lib/lib/1ib/1ib/lih/li tetetetctetetetetes r®x>libjiagu.so:51b0c3ac0520aoe1mour2»rsl

9、ibjiagu.so:51b0c3b01c009de5ldrro,sp9tt0x1clibjiagu.so:51b0c3b42de5ffebblmemcpy_0libjiagu.so:51b8c3b8005080e5strr5.splibjiagu.so:51b0c3bc0730aoe1mour3»r7libjiagu.so:51b0c3c0042099e5ldrr2tr9 沖libjiagu.so:s1b0c3c40800aoe1mour6,r8libjiagu.so:51b0c3c81c109de5ldrr1,spf#0x1clibjiagu.so:51b0c3cc7ffaffe

10、bblunk._51bo95d0libjiagu.so:5lb0c3d01c309de5ldrr3,sp9«0x1clibjiagu.so:51b0c3duof28aoe3*h0ur2,0oxfo0o2libjiagu.so:51b0c3dc055083e0addr5tr3t rslibjiagu.so:s1b0c3e08300aoe1mouro,r3libjiagu.so:51b0c3e40510aoe1mou|r1,r5libjiagu.so:51b0c3e80270aoe1mour7.r2libjiagu.so:5lb0c3ec0920aoe3mour2>m0libjia

11、gu.so:51b0c3f0000000efsue0libjiagu.so:51b0c3f40310aoe1mour1,r3libjiagu.so:s1b0c3f8042099e5ldrr2,r9,tt4libjiagu.so:51b0c3fcqfl30aoe1mour3,r10libjiagu.so:51b0c4000800aoe1mouro,r8njida vi “-pcbreakpointsr2r3rmr5r6r7r8r95128fc98 w 51289au8 u 00000230 51boa0co 400c1228 . ooo08oao s12899a8 wi 51b0a0c0 w 5

12、128fc98 w bed1b528 wr1851b0c18a u二 modulespath迪 /data/data/usei 迥 /$ystem/bin/ap| 辿 /system/bin/linl 遇 /system/lib/libe 理 /system/lib/libe51b0c404這個位置就會跑飛。這樣分析比較累人。換個思路,對一些關鍵函數進行hook,逬行hook log分析hook dlopen和dlsym log打印岀libjiagu.so的加載基址和大小dlopen /data databusertestcommyapplicaton/fi1es/1ibjiagu.so dl

13、openafter addr:4ooclof9 retv:400d2838 r0:5129bb80 rl:00000001 r2:0 dlopen after:libjiagu.so base:5io3t>ooo size:46000 libjiagu base:slbsbooo size:46000 raw func:400c1065 jmp addr:51b3a001dlsym.before addr:400c1065 reta:4o8ca9fb r0:400d2838 rl:4090e87b r2:5 dlsymafter addr:400c10g5 retv:51b4i630 r

14、0:400d2838 rl:4090e87b r2:59 dlsym jhil.onload funcp: 51&41630 cont: e92d00ql可以看到jni_的地址還是在libjiasu.so內存范圍內的hook registernatives 函數,打印如下 log.before adetr :&5 rcta: &$ 1c4ci0o4 h3:00000002 at90:40q45$reqtstersatlves nane:interfacet sig:(landroid/app/applfeation;ldndroid/content/context;)z

15、 unc:$ie2r211start dap in&oe:/datamhhhhtsle2&ooo-4tx»0interfacer<hp9evsize:4bo00 paeteft:01eftsixe:4booo wrltecount:4&regt 5tersar 1 ves_<fter addr: 408b59&s retv:fff f rf ff <0:4oc4ms000079 r2:s16doq4 r3:0000000? argo:40c4»8so這個log可以看至u registernatives有被調用 注冊了一個in

16、terface?函數,函數地址 是51e2f211,仔細看這個地址發(fā)現(xiàn),這個地址已經是thumb指令集了,跟libjiagu.so使用 的arm指令集不太相符,而且可以看到函數地址已經超岀了 libjiagu.so內存范圍了.libjiagu.so的基址是51b3b000,大小是46000,最大內存地址是51b81000那么,基本可以確定,它在內存中加載了另一個so從/proc/%pid%/maps里找到函數地址所在的內存塊,把周圍連續(xù)的內存一起dump 出來在這片內存里找到如下一塊內存00000000:001000000-0000()000-0000()000-000000000000001

17、0:00000000-00000000-00000000-34000000400000020:00000000-00000000-00002000-08000000fl00000030:00000000-06000000-34000000-34000000400000040:34000000-00010000-00010000-040000004000000050:04000000-03000000-34010000-34010000404000000060:34010000-13000000-13000000-04000000ii00000070:01000000-01000000-0900

18#169;00000080:00000000-f8580400-f8580400-05000000i00000090:00100000-01000000-185e0400-186e0400qtn*000000a0:186183n* 1d7*000000b0:00100000-02000000-286c0400-28兀04000(i*(!000000c0:28708010000-06000000(! 106q000000d0:04000000-51e57464-00000000-

19、00000000oatd000000e0:00000000-00000000-00000000-06000000000000f0:00000000-01000070-3cbd0300-3cbd03006p<j»00000100:3cbd0300-28lfi0000-281lt;jf00000110:04000000-52e57464-185e0400-186e0400ratdti00000120:186e0400-e8110000-e8110000-06000000tn*00000130:08000000-2f737973-74656d2f-626

20、96e2f0/svstem/bin/000001406c696e6b-65720000-00000000-00000000linker這其實就是elf heaer 了 ,不過一些elf結構信息已經被抹掉了。除了基本的結構信息 還缺失如下三個數據:0x20 e shoff0x30 e shnum0x32 e shtrndx接下來的工作就是對這個殘缺的內存進行修復了,通過分析上面三個數據,dlopen其 實都沒有用到,mfwelf運行沒有影響。經過修復后的文件可以替換掉原來的libjiagu.so ,重新簽名后使apk正常運行,用于 ida動態(tài)調試分析。下面是經過修復后的libjiagu.so用i

21、da分析的流程圖片段etmh八mim mmy - m1/c)n. *7wq tmm*mlmwc ft 71c»r rarf. vs«1mn or:erm>*<li“,-wi"x ftimmllf* x 1<mtnf “-x、el >;omlfm mtm tftl.etmaim icmmz.merwif giimmmb u “wm札“l(fā)x ak4 mmblie “ “im *mmm ee wit*1c*!n « k ! tt.<”urwt360在dex加載的時候z并沒有調用dvmdexfileopenpartial ,而是自實

22、現(xiàn)了此函數的功能,因此直接在這個函數上下斷點是不能脫殼的。它的實現(xiàn)方式基本是照抄了 bionic源碼dexfile* dexfilepaps©(const ul* data, size_t lengthy int flags) dexfile* pdexfile = nu_l; const dexheader* pheader; const ul* magic; irrt result = -1;if (length < sizeof(dexheader) aloge(utoo short to be a valid .dex,b); goto ibail;/ bad -fil

23、e -format */pdexfile = (dexfile*) malloc(sizeof(dexile);if (pdexfile = null)goto ibail;嚴 alloc failure /memsepdexfile., 0, sizeof(dexzile);/* peel off the optimized header.*/if (memcmpcdata dex.cptj-tagic, 4) = 0)magic = data;if (memcmpcmagic+a, dex_opt_magic_ver» 4) != 0) al06f("bad opt version ?0x%82x %02x %02x %02x)j magic4(nagic5magic6magic7); goto bail;如上面源碼所示,使用dex所在內存的時候都會使用memcmp校驗magic是否為 dex,所以只要hook memcmp ,然后在過濾函數里校驗是否為dex ,然后dump出來即是 原始的dex。把hook框架搭好,實現(xiàn)如下的memcmp過濾函數,就可自動將原始dex dump下 來。jvoid aiencmp.bef or e_f lit er (intint argl, mtmtmt arg4, int arg5)iif (a

溫馨提示

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

評論

0/150

提交評論