[toc]
創(chuàng)新互聯(lián)公司是一家企業(yè)級云計算解決方案提供商,超15年IDC數(shù)據(jù)中心運(yùn)營經(jīng)驗。主營GPU顯卡服務(wù)器,站群服務(wù)器,西部信息機(jī)房,海外高防服務(wù)器,成都機(jī)柜租用,動態(tài)撥號VPS,海外云手機(jī),海外云服務(wù)器,海外服務(wù)器租用托管等。#0x00 前言
##不知所以然,請看
Android逆向-Android基礎(chǔ)逆向(1)
Android逆向-Android基礎(chǔ)逆向(2)
##以及java系列:
Android逆向-java代碼基礎(chǔ)(1)
Android逆向-java代碼基礎(chǔ)(2)
Android逆向-java代碼基礎(chǔ)(3)
Android逆向-java代碼基礎(chǔ)(4)
Android逆向-java代碼基礎(chǔ)(5)
Android逆向-java代碼基礎(chǔ)(6)
Android逆向-java代碼基礎(chǔ)(7)
Android逆向-java代碼基礎(chǔ)(8)
由于之前的Android逆向-Android基礎(chǔ)逆向(2)的偽加密部分篇幅太長,導(dǎo)致其他內(nèi)容沒有完成,所以才有了這里的Android逆向-Android基礎(chǔ)逆向(2-2)。希望可以完成計劃中的內(nèi)容。
##學(xué)習(xí)內(nèi)容
(1)APK文件偽加密√
(2)資源文件防反編譯
(3)apk打包流程
(4)apk反編譯流程
(5)apk回編譯流程、
#0x01 資源文件防反編譯
之前說過可以通過更改第四個字段來進(jìn)行防止一定程度的反編譯。那么除了這種偽加密的方式,還有什么方式可以防止這種偽加密的出現(xiàn)呢。
來看看資源文件是如何防止反編譯的。
自然我們需要研究一下xml文件的格式。四哥在2016年已經(jīng)分析過了,不過那是人家分析的,只看別人分析的不能進(jìn)行更深入的學(xué)習(xí)。紙上得來終覺淺,絕知此事要躬行。so,就有了這篇。
##1.第一個模塊
這里對應(yīng)使用一個實例分析,就用Android逆向-Android基礎(chǔ)逆向(1)中的簡單的apk來分析吧。
###1.1 Magic Number
這里魔數(shù)是00 08 00 03,這個是一個固定的值。
###1.2File Size
這個就是用來確認(rèn)文件大小的。
這里是00 00 07 90 ,也就是1970個bytes。
###1.3用python實現(xiàn)分析
四哥用java寫的,我就獻(xiàn)丑寫個python的,還在學(xué)習(xí)python的過程中,有什么錯誤或者做的不好的地方,還請見諒。
這個是實現(xiàn)這個模塊的代碼。但是感覺自己寫的好繁瑣,等一會兒適當(dāng)修改一下。
2018年1月27日11:57:35,忙別的事情去了。
def fenxi(filename):
try:
f=open(filename,'rb')
print 'start--------'
i=0
p1=""
p2=""
p3=""
p4=""
p=""
while True:
t=f.read(1)
t1=t.encode('hex')
if i==0:
p1=t1
if i==1:
p2=t1
if i==2:
p3=t1
if i==3:
p4=t1
i=i+1
if i<4:
p=p+" "
if i==4:
break
pass
p=p4+" "+p3+" "+p2+" "+p1
print "Magic Number:",p
i=0
p1=""
p2=""
p3=""
p4=""
p=""
while True:
t=f.read(1)
t1=t.encode('hex')
if i==0:
p1=t1
if i==1:
p2=t1
if i==2:
p3=t1
if i==3:
p4=t1
i=i+1
if i<4:
p=p+" "
if i==4:
break
pass
p=p4+" "+p3+" "+p2+" "+p1
print "FileSize:",p
except IOError:
print "This is bad for input '",name,"'."
print "You can enter -h for help."
###1.Chunk Type
String Chunk 的標(biāo)識符,默認(rèn)是00 08 00 03
String Chunk的大小。
字符串的個數(shù)。
樣式的個數(shù)
首部偏移量,也就是String Chunk的位置。
樣式偏移,但是因為樣式?jīng)]有。所以這里全部為0
這個是字符串偏移,大小就是String count*4個bytes
這個就是最主要的地方了。不過中間有一個0的空字符串。需要注意,然后使用一個循環(huán)就可以簡單的分析出來了。
這里帖出代碼部分。
while True:
t1=f.read(1)
t2=f.read(1)
tf1=t1.encode('hex')
tf2=t2.encode('hex')
p1=tf2+tf1
ph=int(p1, 16)
p3=""
i=0
while True:
t=f.read(1)
t1=t.encode('hex')
p=int(t1, 16)
p3=p3+chr(p)
t=f.read(1)
i=i+1
if i==ph:
break
pass
print "first string:",p3
t=f.read(2)
if l==12:
t=f.read(4)
l=l+1
if l==x-1:
break
運(yùn)行結(jié)果展示:
這個Chunk主要是存放的是AndroidManifest中用到的系統(tǒng)屬性值對應(yīng)的資源Id
和其他Chunk一樣,都有特征值,Resourceld Chunk的特征值是:0x00080108
Size大小沒有什么好解釋的。
這里可以根據(jù)id在frameworks\base\core\res\res\values\public.xml中查找到相對應(yīng)的string。
一下是簡單的代碼模塊:
a=p/4-2
i1=0
while True:
i=0
p1=""
p2=""
p3=""
p4=""
p=""
while True:
t=f.read(1)
t1=t.encode('hex')
if i==0:
p1=t1
if i==1:
p2=t1
if i==2:
p3=t1
if i==3:
p4=t1
i=i+1
if i==4:
break
pass
p=p4+p3+p2+p1
p5=p4+" "+p3+" "+p2+" "+p1
p=int(p, 16)
print "123id:",p,"bytes","hex:",p5
i1=i1+1
if i1==a:
break
這個Chunk主要包含一個AndroidManifest文件中的命令空間的內(nèi)容
特征碼,這里不強(qiáng)調(diào)了。 特征碼是00 10 01 00。
Chunk的大小。
在AndroidManifest文件中的行號
未知區(qū)域,一般是ffff
命名空間的前綴
命名空間的Urk
這個模塊主要是為了存放標(biāo)簽信息
這里要啰嗦了。第五個模塊要寫完的時候,突然鼠標(biāo)的返回鍵被按到了。我都在想是不是應(yīng)該在本地寫了,而不是在云端寫,太感人了這個。傷心。準(zhǔn)備偷懶了。
標(biāo)志字段,固定字符。
00 10 01 02
Chunk 大小
行數(shù),和上一個段一樣
位置區(qū)域
標(biāo)簽用的uri,但是也有可能是返回 ff ff ff ff。
代碼實現(xiàn):
i=0
p1=""
p2=""
p3=""
p4=""
p=""
while True:
t=f.read(1)
t1=t.encode('hex')
if i==0:
p1=t1
if i==1:
p2=t1
if i==2:
p3=t1
if i==3:
p4=t1
i=i+1
if i==4:
break
pass
p=p4+p3+p2+p1
p=int(p, 16)
try :
print "Namespace Uri:",list[p]
except IndexError:
print "Namespace Uri is nothing"
標(biāo)簽名稱字段
標(biāo)識是開始flags還是結(jié)束flags
包含屬性的個數(shù)
標(biāo)簽包含的類屬性
屬性內(nèi)容。包括NamespaceUri,Name,ValueString,type,Data,這五個字段。
這個和第五個塊一樣。
因為是和之前的模塊一樣這里就不做解釋了
##python
1.python右移的方式
2.python格式轉(zhuǎn)換
3.對二進(jìn)制模塊分析
4.這個是大的收貨,得到了一個xml文件分析工具。
5.github地址:xml.py文件分析
感覺這里需要的內(nèi)容很多,就得要分成很多小塊來說。為什么這里要寫關(guān)于xml的分析呢,因為加固的目的就是為了防止反編譯。那么我們可以針對反編譯軟件進(jìn)行針對化加固,在下一個小塊將會詳細(xì)講解。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁標(biāo)題:Android逆向-Android基礎(chǔ)逆向(2-2)-創(chuàng)新互聯(lián)
文章來源:http://aaarwkj.com/article38/dpippp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、ChatGPT、微信小程序、網(wǎng)站改版、網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容