因为需要,要在android中解析dex文件,通过解析dex文件加载文件中的class。但是解析dex不能用android提供的dexclassloader()去获取class。而是通过native方法自己去解析dex文件,然后用native方法生成一个class……
不知道大家明白我的意思了没?
求帮助啊……

解决方案 »

  1.   

    你可以研究下的dex2jar这个开源项目
      

  2.   

    我去看了下,它貌似是用JAVA实现的,我想用C或者C++去实现。其实我这个实现主要是在native层去做……
      

  3.   

    #!/usr/bin/pythondef  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 里面的所有字符串。 希望对你有帮助