Android逆向-Android基础逆向(2-2)

网友投稿 238 2022-10-24


Android逆向-Android基础逆向(2-2)

[toc]

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."

2.第二个模块

2.Chunk Size

3.String Count

4.Style Count

5.Unknow

6.String Pool Offset

7.Style Pool Offset

样式偏移,但是因为样式没有。所以这里全部为0

8.String Offsets

9.常量池

这个就是最主要的地方了。不过中间有一个0的空字符串。需要注意,然后使用一个循环就可以简单的分析出来了。这里帖出代码部分。

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

3.第三个模块 Resourceld Chunk

3.1 Chunk Type

3.2 Chunk Size

3.3Resourcelds

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

4.第四个模块

4.1 Chunk Type

4.2 Chunk Size

4.3 Line Number

4.4Unknown

4.5 Prefix

4.6Uri

5.第五个模块

5.1 Chunk Type

标志字段,固定字符。00 10 01 02

5.2 Chunk Size

Chunk 大小

5.3 Line Number

行数,和上一个段一样

5.4 Unknown

位置区域

5.5Namespace Uri

标签用的uri,但是也有可能是返回 ff ff ff ff。代码实现:

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"

5.6 name

5.7 flags字段

5.8 Attribute Count

5.9 Class Attribute

5.10Attributes Attribute

6.第六个模块

7.第七个模块

收获

##python 1.python右移的方式2.python格式转换3.对二进制模块分析4.这个是最大的收货,得到了一个xml文件分析工具。5.github地址:xml.py文件分析

结束语

感觉这里需要的内容很多,就得要分成很多小块来说。为什么这里要写关于xml的分析呢,因为加固的目的就是为了防止反编译。那么我们可以针对反编译软件进行针对化加固,在下一个小块将会详细讲解。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java ThreadLocal的使用详解
下一篇:单位网络布线中需要注意的几个问题及心得
相关文章

 发表评论

暂时没有评论,来抢沙发吧~