apk破解实战

摘要:移动开发之Android开发工具:apk破解工具(Native App)ApkTool的下载和安装。破解和转义apk文件的利器...

  1. 步骤 1:得到resource及smali文件
    1. 1)得到apktool工具
    2. 2)DOS命令窗口下进入到apktool.bat所在的文件夹里
    3. 3)打开 C:\out文件夹 就可以得到各种资源了
  2. 步骤2:得到java文件
    1. 方法a:
    2. 方法b(TBV)
  3. 步骤3:破解源代码
    1. 1)查找位置
    2. 2)更改smali文件
  4. 步骤4 将反编译完的文件重新打包成apk文件out.apk
  5. 步骤5:对生成的apk签名
  6. 参考文档

近日使用某在线听歌软件,有不少儿童故事不错,但在线听经常出现时断时续情形,而软件要求积分大于1500才可整页下载。要满足积分条件需要手动安装其推荐的数十个应用,简直是坑爹。故决定破解之。

假定要破解apk的名字为mytest.apk,则破解步骤如下:

步骤 1:得到resource及smali文件

1)得到apktool工具

http://code.google.com/p/android-apktool/https://github.com/brutall/brut.apktool下载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。解压缩下载的两个文件包,apktool-install-windows-2.1_r01-1.zip解压缩后得到的包里有aapt.exe和apktool.bat.(注意要把apktool-1.0.0.tar.bz2解压后的一个.jar 文件copy进来)

2)DOS命令窗口下进入到apktool.bat所在的文件夹里

1. D:\android\tool\apktool\apktool d C:\mytest.apk C:\out

命令行解释:apktool d 要反编译的文件 输出文件夹

特别注意:你要反编译的文件一定要放在C盘的根目录里,

3)打开 C:\out文件夹 就可以得到各种资源了

步骤2:得到java文件

方法a:

  1. 把apk文件改名为.zip,然后解压缩出其中的class.dex文件
  2. 安装把dex文件反编译为jar文件的工具dex2jar。http://code.google.com/p/dex2jar/downloads/list
  3. 把class.dex拷贝到dex2jar.bat所在目录。
  4. 生成jar文件classes.dex.dex2jar.jar[java]dex2jar.bat classes.dex
  5. 安装把jar反编译为java的工具。(JD-GUI)http://java.decompiler.free.fr/?q=jdgui
  6. 运行JD-GUI工具,打开上面的jar文件
  7. File -> Save All Sources将生成Java源代码文件到c:\out

方法b(TBV)

  1. 从out目录下取得dexdump。
  2. adb shell dexdump -d -f -h /data/dalvik-cache/data@app@mytest.apk@classes.dex > twitpic.text

步骤3:破解源代码

1)查找位置

由于此软件要求积分大于1500才可下载,故打开java文件,查找1500发现有三个文件有定义,PlayActivity$12.java,Cfg.java,ScoreDialog$5.java。

PlayActivity$12.java

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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
DialogPreference是Android提供的一个用于设置应用程序配置的控件,它继承自Preference,可以在设置界面中以对话框的形式显示,允许用户进行交互操作。以下是一个DialogPreference的实战示例: 1. 创建一个新的Preference类,继承自DialogPreference。 ```java public class MyDialogPreference extends DialogPreference { public MyDialogPreference(Context context, AttributeSet attrs) { super(context, attrs); setDialogLayoutResource(R.layout.dialog_preference_layout); } @Override public void onBindDialogView(View view) { super.onBindDialogView(view); // 在对话框中找到需要修改的控件,进行相应的操作 EditText editText = view.findViewById(R.id.editText); editText.setText(getSharedPreferences().getString(getKey(), "")); } @Override public void onDialogClosed(boolean positiveResult) { if (positiveResult) { // 在对话框中找到修改后的控件的值,并保存到SharedPreferences中 EditText editText = getDialog().findViewById(R.id.editText); String value = editText.getText().toString(); SharedPreferences.Editor editor = getSharedPreferences().edit(); editor.putString(getKey(), value); editor.apply(); } } } ``` 2. 在XML文件中定义该Preference。 ```xml <PreferenceCategory android:title="Dialog Preference"> <com.example.MyDialogPreference android:key="my_dialog_preference" android:title="My Dialog Preference" android:summary="Click to edit" android:dialogTitle="Edit my preference" android:dialogMessage="Please enter your preference" android:positiveButtonText="OK" android:negativeButtonText="Cancel" android:defaultValue="" android:dialogLayout="@layout/dialog_preference_layout"/> </PreferenceCategory> ``` 3. 定义对话框布局文件dialog_preference_layout.xml。 ```xml <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Enter your preference"/> ``` 4. 在设置界面中显示该Preference。 ```java public class SettingsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()) .commit(); } public static class SettingsFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); } } } ``` 以上就是一个DialogPreference的实战示例,通过继承DialogPreference并重写相应的方法,可以实现自定义的对话框设置控件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值