首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android的一款调整jad,apktool,dex2jar的脚本

2012-06-26 
android的一款整合jad,apktool,dex2jar的脚本#! /usr/bin/env python#codingutf-8import osimport subpro

android的一款整合jad,apktool,dex2jar的脚本

#! /usr/bin/env python#coding=utf-8import osimport subprocessimport timeimport shutil,sysimport zipfile  apksrc="C:\\test\\test.apk"apkdest=""copyzip=""dex2dir=""jadsrc=""projectcodepath=""apktoolpath=r"F:\\bishe\android\apktool\apktool.bat"dex2jarpath=r"F:\\bishe\android\dex2jar-0.0.9.8\dex2jar-0.0.9.8\dex2jar.bat"jadexepath=r"F:\\bishe\android\jad158g\jad.exe"def apktools(src,dest):            cmd_list=apktoolpath+r" d -f "+src+" "+dest        print cmd_list    process = subprocess.Popen(cmd_list)         while 1:           ret1 = subprocess.Popen.poll(process)           if ret1 == 0:               print process.pid,'end'              break          elif ret1 is None:                            time.sleep(1)           else:               print sub2.pid,'term'              break          print "apk tools end"def jad(src,dest):    codesrc=dest+"src\"    if((os.path.exists(codesrc))==False):        os.makedirs(codesrc)    cmd_list=jadexepath+" -o -r -d "+codesrc+" -s java "+src+"**\\*.class"    print cmd_list    process = subprocess.Popen(cmd_list)         while 1:           ret1 = subprocess.Popen.poll(process)           if ret1 == 0:               print process.pid,'end'              break          elif ret1 is None:                        time.sleep(1)           else:               print sub2.pid,'term'              break  print "apk jad code successfully"    def dex2jar(src,dest):           cmd_list=dex2jarpath+" "+src+"classes.dex"        print cmd_list    process = subprocess.Popen(cmd_list)         while 1:           ret1 = subprocess.Popen.poll(process)           if ret1 == 0:               print process.pid,'end'              break          elif ret1 is None:                            time.sleep(1)           else:               print sub2.pid,'term'              break              print "apk dex2jar.bat successfully"        def unzip(src,dest):    print src    f = zipfile.ZipFile(src)     f.extractall(dest)         f.close()      print "apk unzip successfully"    def GenerateProCode(dest):    print     jadsrc+"src"    print dest    shutil.copytree(jadsrc+"src\",dest)    shutil.copytree(apkdest,dest)                   def adbinstall(src):    cmd_list="adb install "+src        print cmd_list    process = subprocess.Popen(cmd_list)         while 1:           ret1 = subprocess.Popen.poll(process)           if ret1 == 0:               print process.pid,'end'              break          elif ret1 is None:                            time.sleep(1)           else:               print sub2.pid,'term'              break              print "apk install successfully"            def init(src,dest):    global apkdest    global dex2dir    global copyzip    global jadsrc    global projectcodepath    copyzip=os.path.dirname(src)+"\"+"dex2jar.zip"    if dest=="":        apkdest=os.path.dirname(src)+"\\ProjectCode\"    shutil.copy2(src,copyzip)    dex2dir=os.path.dirname(src)+"\\dex\"    jadsrc=os.path.dirname(src)+"\\jad\"            init(apksrc,apkdest)apktools(apksrc,apkdest)unzip(copyzip,dex2dir)dex2jar(dex2dir,apkdest)unzip(dex2dir+"classes_dex2jar.jar",jadsrc)jad(jadsrc,apkdest)adbinstall(apksrc)    

?

代码如上,就是对一个apk文件自动解压缩,生成最终代码在projectcode中,包括了解压缩后的AndroidManifest.xml,反编译的java文件,资源文件等等

热点排行