php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号
需求:
get the offer tracking link
follow the redirect to get google play url
Go to http://apps.evozi.com/apk-downloader/
Enter google play url
Download APK file
Decompile APK file using https://code.google.com/p/android-apktool/wiki/ApktoolOptions#Decompile_Options
Extract this file
[app name]/smali/com/kochava/android/tracker/Global.smali
Extract this line
.field public static final SDK_VERSION:Ljava/lang/String; = "Android20141023"
This output the Kochava SDK version numbe
脚本的目的就是将上面的操作步骤自动化
运行脚本之前必须在linux里安装apktool和java环境
操作演示:
上面输入的是应用的包名字,你也可以输入对应的google play url: https://play.google.com/store/apps/details?hl=en&id=com.priceline.android.negotiator
以下是代码:
<?php
fwrite(STDOUT, "please enter the google play url or app package name: ");
$url = trim(fgets(STDIN));
$name_reg="/id=([^&]+)/";
preg_match($name_reg,$url,$name);
if(empty($name)){
$packagename=$url;
}else{
$packagename=$name[1];
}
function getParameter(){
$url="http://apps.evozi.com/apk-downloader";
$context=file_get_contents($url);
preg_match("/var evoziJsData = {(.+)};/",$context,$json);
$t=explode(",",$json[1]);
foreach($t as $key=>$value){
$value=str_replace(' ','',$value);
$t[$key]=$value;
}
$token_value=explode(":",$t[1]);
$t_value=$token_value[1];
$dtrken=explode(":",$t[2]);
$patten="/var ".$dtrken[1]." = '(.+)';/";
preg_match($patten,$context,$daw);
$dtrken[1]=$daw[1];
return array("t"=>$t_value,"dtrken"=>$dtrken);
}
function ajaxPost($packagename) {
$tk=getParameter();
$t=$tk['t'];
$dtrken_key=$tk['dtrken'][0];
$dtrken_value=$tk['dtrken'][1];
$post_url='http://api.evozi.com/apk-downloader/download';
$data = 'packagename='.$packagename.'&t='.$t.'&'.$dtrken_key.'='.$dtrken_value.'&fetch=false';
$ch = curl_init();
$headers = array('content-type: application/x-www-form-urlencoded;charset=UTF-8');
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$results = curl_exec($ch);
curl_close($ch);
$results = json_decode($results);
return $results;
}
function getVersion($packagename){
$version="/Android[0-9]+/";
$path=$packagename."/smali/com/kochava/android/tracker";
$filename1="Global.smali";
$filename2="a.smali";
if(is_dir($path)){
$file=scandir($path);
foreach($file as $key=>$value){
$filename=$value;
if(isset($filename)&file_exists($path."/".$filename)){
$context=file_get_contents($path."/".$filename);
preg_match($version,$context,$v);
if(!empty($v)){
$vs=$v[0];
break;
}
}
}
if(isset($vs)){
$info=array("status"=>200,"description"=>"success detection in the file:".$filename,"version"=>$vs);
}else{
$info=array("status"=>203,"description"=>"failure detection in all the .smal file:(".$file."),we can't find the android version number");
}
}else{
$info=array("status"=>201,"description"=>"there is no such directory:".$path);
}
$info=json_encode($info);
return $info;
}
function getFile($file_path,$file_name){
exec("sudo wget -O $file_name $file_path");
}
function deCompileApk($file_name){
print_r("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++start decompile apk,this may need a long time,please wait...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++".PHP_EOL);
exec("sudo apktool d $file_name");
print_r("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++decompile end++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++".PHP_EOL);
}
function delFile($packagename,$file_name){
exec("sudo rm -f $file_name");
exec("sudo rm -rf $packagename");
}
$result=ajaxPost($packagename);
if($result->status=="success"){
$file_name=$packagename."."."apk";
$downloadUrl=$result->url;
$downloadUrl=preg_replace("/&/i", "\&", $downloadUrl);
getFile($downloadUrl,$file_name);
deCompileApk($file_name);
$info=getVersion($packagename);
delFile($packagename,$file_name);
}else{
$tinfo=array("status"=>204,"description"=>"we can't generate Download Link from http://apps.evozi.com/apk-downloader/,please check your input of google play url or app package name!");
$info=json_encode($tinfo);
}
print_r($info.PHP_EOL);
?>
php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号的更多相关文章
- (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译
Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...
- apk应用的反编译和源代码的生成
对于反编译一直持有无所谓有或无的态度.经过昨天一下午的尝试,也有了点心得和体会: 先给大家看看编译的过程和我们反编译的过程概图吧: 例如以下是反编译工具的根文件夹结构: 三个目录也实际上是下面三个步骤 ...
- 反编译 轻松调频 Android APP 下载“飞鱼秀”录音
经常听“飞鱼秀”,但是由于时间的原因,只能听回放,但是轻松调频的APP做的有点儿... 听回放的时候经常会中断,还不能拖动进度条,就决定把录音下载下来听. 1.反编译apk(Android反编译过程见 ...
- 转:介绍几个著名的实用的Java反编译工具,提供下载
from :http://www.glorze.com/219.html 反编译 众所周知,我们将源代码进行编译,生成可执行的程序或者容器发布包,这个将代码转换的过程就是编译的过程,而反编译就是将这些 ...
- apktool的下载,安装,反编译和重新打包
一.环境要求 安装java 1.8 以上 命令行运行 java -version 返回版本大于1.8 如果没有,请安装java 1.8 二.下载与安装 下载apktool_x.x.x.jar到本地 官 ...
- Telerik JustDecompile 2014.1.255.0 开发版(.NET反编译神器,免费下载)
Telerik JustDecompile是Telerik公司推出一个免费的.NET反编译工具,支持插件与Visual Studio 2015~2013集成,还能够创建Visual Studio Pr ...
- eclipse安装反编译插件(附jad下载)
eclipse安装反编译插件(附jad下载) 博客分类: eclipse 一.eclipse反编译插件Jadclipse jadclips插件网站: http://jadclipse.sou ...
- vc++ 6.0编译后生成的文件
程序在编译后,在目标路径下会生成多个文件 Debug文件夹(*.exe,*.ilk,*.obj,*.pch,*.pdb,*.idb,*,pdb),*.cpp,*.dsp,*.ncb,*.plg ...
- asp动态生成google的sitemap地图的代码
本来使用那些网站生成google网站地图,时间久了,感觉太麻烦了:先打开他们的网站,输入我的网址,然后点击生成,等待一段时间后,下载生成后的文件,再将它通过ftp上传到空间上了.实在太麻烦了,还不如自 ...
随机推荐
- maven 项目中使用 jstl标签
在pom.xml文件下面增加如下的依赖包: <dependency> <groupId>javax.servlet</groupId> <artifactId ...
- Uva11464 开关问题
给一个n×n的01矩阵,你的任务是将尽量少的0变成1,是的每个元素的上下左右的位置(如果存在的话)的之和均为偶数.1<=n<=15. 如果暴力整个矩阵,那么时间复杂度是O(2^(n*n)) ...
- jQuery的理论基础
概述 jQuery是用JavaScript语言编写的函数库,我们用时,可以直接调用jQuery中相应的函数,对于JavaScript的理解,前面的博客已经介绍过了,在这里只说一下函数的作用,也可以说为 ...
- Bestcoder Round#45
1001 给定数n,要我们求该数的二进制中有多少组1, 相邻的1称为1组, 直接位运算摸你即可 #include <stdio.h> #include <string.h> # ...
- 【原创】leetCodeOj --- Binary Tree Right Side View 解题报告
二连水 题目地址: https://leetcode.com/problems/binary-tree-right-side-view/ 题目内容: Given a binary tree, imag ...
- Ctrl+Alt+T 文档大纲
- zookeeper集群的python代码测试
上一篇已经讲解了如何安装zookeeper的python客户端,接下来是我在网上搜到的例子,举例应用环境是: 1.当有两个或者多个服务运行,并且同意时间只有一个服务接受请求(工作),其他服务待命. 2 ...
- 使用crontab创建 linux 系统定时任务#
任务1: 每隔1分钟,运行一次 /home/sn/yeelink.sh文件 ,用于上传数据到www.yeelink.net 1. 先在当时目录里面创建一个cronfile文件 vim cronfile ...
- Hive ERROR: Out of memory due to hash maps used in map-side aggregation
什么时候hive在运行大数据量的统计查询语句时.常常会出现以下OOM错误.详细错误提演示样例如以下: Possible error: Out of memory due to hash maps us ...
- Acdreamoj1115(数学思维称号)
意甲冠军:1,3是完美的数,假定a,b是完美的数,然后,2+a*b+2*a+2*b,结论认为,n无论是完美的数字. 解法:開始仅仅看出来2+a*b+2*a+2*b=(a+2)*(b+2)-2,没推出很 ...