一个简单的apk破解

我们来看看要破解的apk打开后是个什么样的界面并且有什么功能,这个是我自己编写的一个简易程序,下面我会放出源码。






在这里我们可以看见这个app是一个输入密码然后输入正确下面就会出现登录成功的提示,否则下面就会有登录失败的提示,在这里我们要求让这个软件无论密码正确还是不正确都让它提示登录成功。









下面我们先用ApkIDE这个工具打开这个apk


我们来于都这个smali发现有一个if的判断跳转语句,如下图


这里的意思是如果v2等于v0跳转到:con_0执行,要不然继续往下执行不进行跳转,然后我们在右边搜索登陆成功,这里记住要转换成Unicode码再进行搜索。


这里我们可以看见:cond_0后面执行的是登陆成功的代码,所以我们要让它进行无条件的跳转到:cond_0执行,那么这里在if判断语句的前面让它直接跳转到:cond_0的位置执行。

1.在if eq v0, v2, :cond_0的上面加上代码goto :cond_0就可以直接跳转到:cond_0处执行。

2.还有就是把if eq v0, v2, :cond_0改成if ne v0, v2, :cond_0

3.我们还可以把Toast显示内容修改了,把登陆失败修改成登陆成功,这里记住要把字符转换为Unicode码,最后实现效果。

最后保存后编译生成apk。

下面是这个程序的源代码:

布局源代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/TextView"
        android:textSize="55dp"
        />

    <EditText
        android:id="@+id/editText"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:layout_marginLeft="45dp"
        android:layout_marginTop="40dp"
        />
    <Button
        android:id="@+id/Button"
        android:layout_width="110dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="40dp"
        />
</LinearLayout>
java源代码

package com.example.zhangrenjie.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
    private TextView tv;
    private EditText et;
    private Button bt;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
        TextView tv = (TextView) findViewById(R.id.TextView);
        final EditText et = (EditText) findViewById(R.id.editText);
        Button bt = (Button) findViewById(R.id.Button);
        tv.setText("请输入正确的密码,否则无法成功进入程序");
        bt.setText("确定登陆");
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = et.getText().toString();
                int num;
                num=Integer.valueOf(str);
                if (num != 123456789) {
                    Toast.makeText(getApplicationContext(), "登陆失败",Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(getApplicationContext(), "登陆成功",Toast.LENGTH_SHORT).show();
                }
                }
        });
    }
}

后面还要更加精彩的文章哦





  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ApkTool』简要介绍 提供1.3.5测试版源码。 此程序在其基础上完善并添加一些功能,此版本号定位2.0 最终版。 定为最终版的原因是支持动态加载最新的内置工具: ..\Bin\*.*目录下的所有工具如果有最新版本的,替换Bin目录内的程序即可应用最新版。 [注意:不要更改目录内的文件名,否则不会被加载。],判断是否使用最新版本的程序, 可以看启动日志中每个文件的路径。日志内容如下: 加载apktool.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\apktool.jar 加载aapt.exe的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\aapt.exe 加载signapk.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\signapk.jar 加载testkey.pk8的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.pk8 加载testkey.x509.pem的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.x509.pem 加载baksmali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\baksmali.jar 加载smali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\smali.jar 加载dex2jar.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\dex2jar.jar 加载asm-debug-all.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\asm-debug-all.jar 加载commons-io.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\commons-io.jar 加载slf4j-simple.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-simple.jar 加载slf4j-api.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-api.jar ============================================================== 华丽的分割线 ============================================================== 使用说明: =========================================================== 使用环境:须安装 java,下载地址:http://www.java.com/zh_CN/ 1、反编译APK 拖拽APK程序到"反编译APK"按钮前的输入区,点击"反编译APK"按钮 2、重建APK 把第一步得到 文件夹 拖拽到"重建APK"按钮前面的输入区,点击"重建APK"按钮, 至此会自动生成已经签名好的"XXOO(已签名).apk" 3、签名 拖拽APK程序到"签名"按钮前的输入区,点击"签名"按钮,自动生成已经签名好的"XXOO(已签名).apk" 4、反编译dex 拖拽dex文件或odex到"反编译dex"按钮前的输入区,点击"反编译dex"按钮, 会在dex文件所在目录外生成一个与dex文件名相同的目录 5、重建dex 拖拽要重建的目录到"重建dex"按钮前的输入区,点击"重建dex"按钮,会生成与目录名相同的dex文件 6、dex转jar 拖拽dex文件或odex到"6、dex转jar"按钮前的输入区,点击"6、dex转jar"按钮, test.dex 会生成 test.dex.dex2jar.jar 文件 7、jar,class转java 拖拽保护class的目录,或.class文件或 jar文件到"jar,class转java"按钮前的输入区,点击"jar,class转java"按钮, 会生成相应的 java文件。 ========================== 内置软件版本: | apktool 1.4.3 | aapt r04 | baksmali 1.3.2 | smali 1.3.2 | dex2jar 0.0.7.9 | asm-debug-all 3.2 | commons-io 2.0 | slf4j 1.5.6 | jad 1.5.8e2 | ========================== ^_^ Enjoy! 2012.3.16 By:漏网之鱼 QQ:530747686
### 回答1: 一个Android应用可以分为多个APK文件,这是为了支持设备配置分层,使不同设备能够下载适合它们的APK,从而节省存储空间。例如,一个应用可以拆分为多个APK,每个APK分别专门针对不同的屏幕分辨率、架构等设备配置提供服务。在用户安装应用时,Google Play Store 会自动选择适合当前设备配置的APK下载并安装。 ### 回答2: Android一个APK多个APK是指在开发Android应用程序时,使用了动态特性来创建多个APK文件。这样做有多种原因和优势。 首先,一个APK多个APK可以帮助开发者解决应用程序过大的问题。随着应用程序功能的增加和迭代,APK文件可能会变得非常大,这会导致用户在下载和安装应用程序时需要较长的时间和较高的网络流量。而使用多个APK可以将应用程序拆分为不同的部分,根据用户的需求进行灵活下载和安装,从而减少APK文件的大小。 其次,一个APK多个APK还可以提供不同的应用程序体验。通过为应用程序的不同版本和不同设备创建不同的APK,开发者可以根据用户的需求和设备的特性,提供特定的功能和优化的用户体验。比如,对于低端设备,可以提供精简版本的APK以提高性能和响应速度,而对于高端设备,则可以提供更多的功能和高级特性。 此外,一个APK多个APK还可以用于多语言支持。通过创建不同的APK来适配不同的语言版本,开发者可以在不同的国家和地区提供本地化的应用程序界面和文本内容,使用户可以更好地理解和使用应用程序。 总而言之,一个APK多个APK的开发模式可以帮助开发者解决应用程序过大、提供灵活的下载和安装、提供不同的应用程序体验以及多语言支持等问题,提高应用程序的用户体验和适配性。 ### 回答3: Android的一个APK多个APK是指一种特殊的应用程序打包方式,它允许开发者将一个应用程序划分为多个APK包,以适应不同设备、不同配置和不同需求的用户。 通过一个APK多个APK的方式,开发者可以降低APK文件的大小,优化应用程序的性能,并提供更好的用户体验。 这种打包方式主要是通过Google Play市场的分发功能来实现的。开发者可以在Google Play开发者控制台中定义应用程序的配置变体,例如不同的设备架构、多语言支持等。然后,当用户在Google Play上安装应用程序时,系统会根据用户设备的特性和设置,自动下载并安装适合的APK。 通过一个APK多个APK的方式,开发者可以根据设备的CPU架构,提供不同的二进制文件,以充分利用设备的处理能力。同时,开发者还可以根据用户所在的地区和语言偏好,提供相应的资源文件,包括文字、图像等,以确保应用程序的显示效果和可用性。 此外,通过这种方式,开发者还可以定义不同的应用程序配置选项,例如启用或禁用特定功能、使用不同的算法和算法库等。这样,用户可以根据自己的需求和喜好选择所需的APK包,以定制化自己的应用体验。 综上所述,一个APK多个APK的打包方式在Android应用开发中具有重要的意义。它为开发者提供了更多的灵活性和可定制性,同时也提供了更好的用户体验和应用性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值