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

  以下是代码:

 

  1 <?php
  2    fwrite(STDOUT, "please enter the google play url or app package name: ");
  3    $url = trim(fgets(STDIN));
  4    $name_reg="/id=([^&]+)/";
  5    preg_match($name_reg,$url,$name);
  6    if(empty($name)){
  7           $packagename=$url;
  8    }else{
  9           $packagename=$name[1];
 10    }
 11    function getParameter(){
 12       $url="http://apps.evozi.com/apk-downloader";
 13          $context=file_get_contents($url);
 14          preg_match("/var evoziJsData = {(.+)};/",$context,$json);
 15          $t=explode(",",$json[1]);
 16          foreach($t as $key=>$value){
 17              $value=str_replace(‘ ‘,‘‘,$value);
 18              $t[$key]=$value;
 19          }
 20          $token_value=explode(":",$t[1]);
 21          $t_value=$token_value[1];
 22          $dtrken=explode(":",$t[2]);
 23          $patten="/var ".$dtrken[1]." = ‘(.+)‘;/";
 24          preg_match($patten,$context,$daw);
 25          $dtrken[1]=$daw[1];
 26          return array("t"=>$t_value,"dtrken"=>$dtrken);
 27    }
 28    function ajaxPost($packagename) {
 29          $tk=getParameter();
 30          $t=$tk[‘t‘];
 31          $dtrken_key=$tk[‘dtrken‘][0];
 32          $dtrken_value=$tk[‘dtrken‘][1];
 33             $post_url=‘http://api.evozi.com/apk-downloader/download‘;
 34           $data = ‘packagename=‘.$packagename.‘&t=‘.$t.‘&‘.$dtrken_key.‘=‘.$dtrken_value.‘&fetch=false‘;
 35             $ch = curl_init();
 36             $headers = array(‘content-type: application/x-www-form-urlencoded;charset=UTF-8‘);
 37             curl_setopt($ch, CURLOPT_URL, $post_url);
 38             curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 39             curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 40             curl_setopt($ch, CURLOPT_POST, 1);
 41             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 42             $results = curl_exec($ch);
 43             curl_close($ch);
 44             $results = json_decode($results);
 45             return $results;
 46         }
 47         function getVersion($packagename){
 48               $version="/Android[0-9]+/";
 49               $path=$packagename."/smali/com/kochava/android/tracker";
 50               $filename1="Global.smali";
 51               $filename2="a.smali";
 52               if(is_dir($path)){
 53                     $file=scandir($path);
 54                     foreach($file as $key=>$value){
 55                           $filename=$value;
 56                           if(isset($filename)&file_exists($path."/".$filename)){
 57                                     $context=file_get_contents($path."/".$filename);
 58                                     preg_match($version,$context,$v);
 59                                     if(!empty($v)){
 60                                        $vs=$v[0];
 61                                        break;
 62                                     }
 63                         }
 64                     }
 65                     if(isset($vs)){
 66                           $info=array("status"=>200,"description"=>"success detection in the file:".$filename,"version"=>$vs);
 67                      }else{
 68                           $info=array("status"=>203,"description"=>"failure detection in all the .smal file:(".$file."),we can‘t find the android version number");
 69                      }
 70               }else{
 71                    $info=array("status"=>201,"description"=>"there is no such directory:".$path);
 72               }
 73               $info=json_encode($info);
 74               return $info;
 75         }
 76         function getFile($file_path,$file_name){
 77             exec("sudo wget -O $file_name $file_path");
 78         }
 79         function deCompileApk($file_name){
 80                   print_r("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++start decompile apk,this may need a long time,please wait...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++".PHP_EOL);
 81                   exec("sudo apktool d $file_name");
 82                   print_r("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++decompile end++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++".PHP_EOL);
 83         }
 84         function delFile($packagename,$file_name){
 85                   exec("sudo rm -f $file_name");
 86                   exec("sudo rm -rf $packagename");
 87         }
 88         $result=ajaxPost($packagename);
 89         if($result->status=="success"){
 90              $file_name=$packagename."."."apk";
 91            $downloadUrl=$result->url;
 92            $downloadUrl=preg_replace("/&/i", "\&", $downloadUrl);
 93        getFile($downloadUrl,$file_name);
 94        deCompileApk($file_name);
 95        $info=getVersion($packagename);
 96        delFile($packagename,$file_name);
 97         }else{
 98              $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!");
 99              $info=json_encode($tinfo);
100         }
101         print_r($info.PHP_EOL);
102 ?>
时间: 2024-11-02 23:38:06

php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号的相关文章

(Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目,选择类库,取名为JefferyChan,具体步骤如下图: 3.因为要调用Unity中的相关文件,所以这里要引入外部文件.首先在Unity的安装文件夹中找到UnityEngine.dll,我的路径是:D:\Program Files (x86)\Unity\Editor\Data\Managed 如

Help-IntelliJIDEA-2019-基础设置:10.Maven自动下载源码包,告别反编译,直接上源码注释

ylbtech-Help-IntelliJIDEA-2019-基础设置:10.Maven自动下载源码包,告别反编译,直接上源码注释 1.返回顶部 1. 10.Maven自动下载源码包,告别反编译,直接上源码注释Configure | Settings | Build, Execution, Deployment | Build Tools | Maven | Importing将Automatically Download 的 Source 勾上. 2. 2.返回顶部 3.返回顶部 4.返回顶部

apk应用的反编译和源代码的生成

对于反编译一直持有无所谓有或无的态度.经过昨天一下午的尝试,也有了点心得和体会: 先给大家看看编译的过程和我们反编译的过程概图吧: 例如以下是反编译工具的根文件夹结构: 三个目录也实际上是下面三个步骤的体现: (不知道大家发现没,我把三个文件夹名字都改了一下,apktool即为处理apk的工具:dex2jar即就是将dex文件处理为jar包的工具.jar2gui即就是我们将jar包内的class转换为源代码的gui界面以供大家參考的工具) setp 1: 在apktool里: 打开dos框(cm

apk应用的反编译和源码的生成

对于反编译一直持有无所谓有或无的态度,经过昨天一下午的尝试,也有了点心得和体会: 先给大家看看编译的过程和我们反编译的过程概图吧: 如下是反编译工具的根目录结构: 三个文件夹也实际上是以下三个步骤的体现: (不知道大家发现没,我把三个目录名字都改了一下,apktool即为处理apk的工具:dex2jar即就是将dex文件处理为jar包的工具:jar2gui即就是我们将jar包内的class转换为源码的gui界面以供大家参考的工具) setp 1: 在apktool里: 打开dos框(cmd进入然

android APK反编译工具的使用及工具下载(mac)

工具名称.介绍及下载地址: apktool(获取资源文件) 作用:获取资源文件,可以提取出图片文件和布局文件进行使用查看. 下载地址: dex2jar(获取源码文件) 作用:将apk反编译成java源码(classes.dex转化成jar文件). 下载地址: jd-gui(查看源码) 作用:查看APK中classes.dex转化成出的jar文件,即源码文件 下载地址: 反编译流程: 一.apk反编译得到程序的源代码.图片.XML配置.语言资源等文件 下载上述工具中的apktool,解压得到3个文

vc++ 6.0编译后生成的文件

程序在编译后,在目标路径下会生成多个文件 Debug文件夹(*.exe,*.ilk,*.obj,*.pch,*.pdb,*.idb,*,pdb),*.cpp,*.dsp,*.ncb,*.plg       *.exe:是生成的可执行文件    *.ilk:当选定渐增型编译连接时,连接器自动生成ILK文件,记录连接信息    *.obj:是目标文件,源程序编译后的产物    *.pch:全称是PreCompiled  Header,就是预先编译好的头文件,在编译时指定/Yu开关时编译器自动生成  

Telerik JustDecompile 2014.1.255.0 开发版(.NET反编译神器,免费下载)

Telerik JustDecompile是Telerik公司推出一个免费的.NET反编译工具,支持插件与Visual Studio 2015~2013集成,还能够创建Visual Studio Project文件.JustDecompile与Reflector相比的话,个人更喜欢JustDecompile,因为他免费,而且对于一些C#动态类型的反编译效果比较好. Telerik JustDecompile 2014.1.255.0 开发版(.NET反编译神器,VS2013超强插件,等同于破解版

C# 程序自动批量生成 google maps 的KML文件

原文:C# 程序自动批量生成 google maps 的KML文件 google maps 的 KML 文件可以用于静态的地图标注,在某些应用中,我们手上往往有成百上千个地址,我们需要把这些地址和描述批量标注到 google maps 上去,如果手工来做,太耗时间,在这里我写了一个程序批量来生成这个 KML 文件. 首先看一下 KML 文件的格式: <?xml version="1.0" encoding="UTF-8"?> <kml xmlns=

Python脚本生成sitemap

项目须要用脚本生成sitemap,中间学习了一下sitemap的格式和lxml库的使用方法.把结果记录一下,方便以后须要直接拿来用. 来自Python脚本生成sitemap 安装lxml 首先须要pip install lxml安装lxml库. 假设你在ubuntu上遇到了下面错误: #include "libxml/xmlversion.h" compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed wi