使用ApkTool分析apk文件(windows)

使用androidstudio生成一个APK文件
方法是:
build generate signed apk
生成一个APK文件,在mainifest.xml文件中添加一些权限,

 <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.VIBRATE" />

就是这些,在MainActivity.java中添加一个Toast

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(getApplicationContext(), "发送完毕,你的信息被我偷走了", Toast.LENGTH_SHORT).show();
    }
}

生成了apk文件之后从apktool官网下载最新的apktool.jar文件,和apktool.bat文件。把这两个文件保存到c:\windows下,点击apktool.bat文件。
此时可以在任何目录下是用apktool命令,
命令为:apktool d app-release.apk
这里写图片描述
此时会在工作目录下生成一个同名文件夹app-release
这里写图片描述
这里写图片描述
在smali中是反编译得到的smali文件
这里写图片描述
其中有一个是MainActivity.smali就是我们刚刚修改过的文件:
这是内容可以使用其他工具使其变成可以被jdgui查看的文件形式。

.class public Lcom/example/administrator/myapplication/MainActivity;
.super Landroid/support/v7/app/AppCompatActivity;
.source "MainActivity.java"


# direct methods
.method public constructor <init>()V
    .locals 0

    .prologue
    .line 7
    invoke-direct {p0}, Landroid/support/v7/app/AppCompatActivity;-><init>()V

    return-void
.end method


# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
    .locals 3
    .param p1, "savedInstanceState"    # Landroid/os/Bundle;

    .prologue
    .line 11
    invoke-super {p0, p1}, Landroid/support/v7/app/AppCompatActivity;->onCreate(Landroid/os/Bundle;)V

    .line 12
    const v0, 0x7f04001b

    invoke-virtual {p0, v0}, Lcom/example/administrator/myapplication/MainActivity;->setContentView(I)V

    .line 13
    invoke-virtual {p0}, Lcom/example/administrator/myapplication/MainActivity;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string v1, "\u53d1\u9001\u5b8c\u6bd5,\u4f60\u7684\u4fe1\u606f\u88ab\u6211\u5077\u8d70\u4e86"

    const/4 v2, 0x0

    invoke-static {v0, v1, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;

    move-result-object v0

    invoke-virtual {v0}, Landroid/widget/Toast;->show()V

    .line 14
    return-void
.end method

可以使用smali2java使其反编译为java文件

/**
  * Generated by smali2java 1.0.0.558
  * Copyright (C) 2013 Hensence.com
  */

package com.example.administrator.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Context;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle p1) {
        super.onCreate(p1);
        setContentView(0x7f04001b);
        Toast.makeText(getApplicationContext(), "\u53d1\u9001\u5b8c\u6bd5,\u4f60\u7684\u4fe1\u606f\u88ab\u6211\u5077\u8d70\u4e86", 0x0).show();
    }
}

在original文件夹得到的是manifest.xml文件和一些签名文件在original中还有一个文件夹META-INF其中有三个文件,有一个文件是CERT.RSA可以使用keytool来查看里面的内容:
命令是:>keytool -printcert -file cert.rsa
这里写图片描述
这里面包括了各种开发者相关的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值