非常赞成 陌生时空 和 xxpinqz 两位网友的回答,补充一点:
"E:\Android\Android Decompile\Ter-dex2jarjd-gui\apktool\apktoolbat" d -f %~dp0!apkFileName! %~dp0!sourceFileName!
此句 前面应该加个call 估计也是出现问题关键所在
此句看起来很长,其实就是 xxbat 几个参数 的结构,批处理中调用另一批处理必须带call调用,否则返回不了,而调用windows很多窗口程序前面要带start调用也有类似道理,不过一个是等待被调用批处理结束后返回, 一个是不要等(除非start带/wait)start调用的结束就继续执行批处理后续命令
所以应该不是所说的那个位置变量值变成空了,而是另一批处理(包括它再调用的程序)出了问题而被误会,这个很容易检测,在此句之下加句检测命令 echo 返回否&pause 甚至临时加上适当右括号使前面的括号匹配成对,写批处理要会自己检测错误,此句前设个检测点没问题,此句后检测就有问题了,当然就是这一句问题了。可以说,根据代码用途只要此句能返回,是不会出现所说的变量值变空的。
顺便提醒一下,此句调用的那个批处理是否利用了它自己的当前路径不然此句前应改变一下当前路径比如
pushd "E:\Android\Android Decompile\Ter-dex2jarjd-gui\apktool"
call apktoolbat d -f %~dp0!apkFileName! %~dp0!sourceFileName!
popd
反编译步骤方法:
一、apk反编译得到程序的源代码、、XML配置、语言资源等文件
下载上述工具中的apktool,解压得到3个文件:aaptexe,apktoolbat,apktooljar ,将需要反编译的APK文件放到该目录下,
打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入以下命令:apktoolbat d -f testapk test
(命令中testapk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktoolbat d -f [apk文件 ] [输出文件夹])
说明获取成功,之后发现在文件夹下多了个test文件,点击便可以查看该应用的所有资源文件了。
如果想将反编译完的文件重新打包成apk,那可以:输入apktoolbat b test(编译出来文件夹)便可
之后在之前的test文件下便可以发现多了2个文件夹:
build
dist(里面存放着打包出来的APK文件)
二、Apk反编译得到Java源代码
下载上述工具中的dex2jar和jd-gui ,解压
将要反编译的APK后缀名改为rar或则 zip,并解压,得到其中的额classesdex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classesdex放到之前解压出来的工具dex2jar-00915 文件夹内,
在命令行下定位到dex2jarbat所在目录,输入dex2jarbat classesdex
在改目录下会生成一个classes_dex2jarjar的文件,然后打开工具jd-gui文件夹里的jd-guiexe,之后用该工具打开之前生成的classes_dex2jarjar文件,便可以看到源码了
被混淆过的效果图(类文件名称以及里面的方法名称都会以a,b,c之类的样式命名):
三、 图形化反编译apk
上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby
首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具exe,就可以浏览打开要反编译的apk
通过反编译,可以获知该应用用到了什么第3方的库文件,它的代码是如何编写的等等。
然而,如果该APK进行了混淆处理,那么看到的类文件名称以及里面的方法名称都会以a,b,c之类的样式命名,所以可以想找到所想得知的界面代码可能会十分费劲,找到了代码可能看起来也会很费劲,可是一个大体的思路会获得,有了这个思路,就可以去尝试了。
ipad 应用程序扩展名是ipa;APK是安卓软件的扩展名。
IPA是Apple程序应用文件iPhoneApplication的缩写。简单来说,Mac 下的软件就像是 Windows 下的绿色软件一样,解压后即可使用,不需要安装,卸载的话也只用删除程序文件即可(这里不涉及 pkg 格式安装包)。
ipa 文件实质是一个 zip压缩包(不是 rar 或 7z 包),包含 3 个组件:payload 目录下的 app 目录,这个是软件的主程序;iTunesArtwork,实质是一个无后缀名的 png ,用来在 iTunes 中显示图标;iTunesMetadataplist,记录购买者信息、售价等数据。
以上就是关于批处理中for语句中的变量在执行外部程序后会自动变成空值呢全部的内容,包括:批处理中for语句中的变量在执行外部程序后会自动变成空值呢、反编译Android APK的具体步骤是怎样的、ipad 应用程序扩展名是APK吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)