如何解析dex文件
因为需要,要在android中解析dex文件,通过解析dex文件加载文件中的class。但是解析dex不能用android提供的dexclassloader()去获取class。而是通过native方法自己去解析dex文件,然后用native方法生成一个class……不知道大家明白我的意思了没?
求帮助啊……
--------------------编程问答-------------------- 没这么用过呀 --------------------编程问答-------------------- 谁有好一点的思路或者解决方案么?
--------------------编程问答-------------------- dexClassloader --------------------编程问答-------------------- 你可以研究下的dex2jar这个开源项目。。。 --------------------编程问答--------------------
我去看了下,它貌似是用JAVA实现的,我想用C或者C++去实现。其实我这个实现主要是在native层去做…… --------------------编程问答-------------------- #!/usr/bin/python
def getStringFromDexFile(dexFileName):
import os
import struct
dexFile = open(dexFileName,'rb')
dexFile.seek(0x38)
dexFileStrTotal=struct.unpack("i",dexFile.read(4))[0]
dexFileStrBeganPoint=struct.unpack("i",dexFile.read(4))[0]
dexFile.seek(dexFileStrBeganPoint)
dexFileStrAddressList=[]
tmepAddressCount=0
while(tmepAddressCount<dexFileStrTotal):
dexFileStrAddressList.append(struct.unpack("i",dexFile.read(4))[0])
tmepAddressCount+=1
dexFileStrList=[]
for seekCount in dexFileStrAddressList:
listByte=[]
dexFile.seek(seekCount)
if dexFile.read(1)=="\x00":
dexFileStrList.append("")
continue
dexFile.seek(-1,1)
while True:
byteTemp=dexFile.read(1)
if byteTemp>="\x80":
pass
if byteTemp<"\x80":
break
byteCount=0
while (dexFile.read(1)!=("\x00")) :
byteCount+=1
dexFile.seek(-(byteCount+1),1)
tempStr=dexFile.read(byteCount)
dexFileStrList.append(tempStr)
dexFile.close()
return dexFileStrList
刚刚写完的python 源代码, 功能是读取dexFile 里面的所有字符串。 希望对你有帮助
--------------------编程问答-------------------- 呃~怎么没缩进了 ~——~
补充:移动开发 , Android