search 登录 注册
arrow_back返回列表
ID:10010
light_modedark_modedark_modestarstar
Lv.1 韶华一笑间
edit_note帖子 247
stars积分 2,130
event加入 2011-02-06
安卓交流

安卓破解积分限制详解

schedule发表于 2013-04-03 08:41:00 visibility查看 3,347 chat_bubble回复 49
#1 楼主
近日使用某在线听歌软件,有不少儿童故事不错,但在线听经常出现时断时续情形,而软件要求积分大于1500才可整页下载。要满足积分条件需要手动安装其推荐的数十个应用,简直是坑爹。故决定破解之。
假定要破解apk的名字为mytest.apk,则破解步骤如下:
步骤 1:得到resource及smali文件。
1)得到apktool工具
在http://code.google.com/p/android-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所在的文件夹里。
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] view plaincopyprint?
dex2jar.bat classes.dex
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
[java] view plaincopyprint?
final class PlayActivity$$$$$$$$12 implements Runnable
{
public void run()
{
...
int i = 1500;
int j;
Cfg.IS_WITHAD = j;
if (j != 0)
{
if (this.val$$$$$$$$arg1 >= i) //似乎为显示广告门限控制值
break label91;
boolean bool2 = Cfg.HIDDEN_GUANGGAO;
label35: boolean bool3; //???
Cfg.HIDDEN_GUANGGAO = bool3;
Cfg.SaveBool(“hiddenguanggao“, bool3);
}
final class PlayActivity$$$$$$$$12 implements Runnable
{
public void run()
{
...
int i = 1500;
int j;
Cfg.IS_WITHAD = j;
if (j != 0)
{
if (this.val$$$$$$$$arg1 >= i) //似乎为显示广告门限控制值
break label91;
boolean bool2 = Cfg.HIDDEN_GUANGGAO;
label35: boolean bool3; //???
Cfg.HIDDEN_GUANGGAO = bool3;
Cfg.SaveBool(“hiddenguanggao“, bool3);
}
ScoreDialog$$$$$$$$5.java
[java] view plaincopyprint?
final class ScoreDialog$$$$$$$$5 implements Runnable
{
public void run()
{
Object localObject1 = null;
int i = 17301659;
int j = 1500; //Score
...
if (localProgressDialog != null)
if (this.val$$$$$$$$arg1 < j) //可以猜出此为定义的分数之一,如不满足则弹出对话框
{
ScoreDialog localScoreDialog1 = this.this$$$$$$$$0;
final class ScoreDialog$$$$$$$$5 implements Runnable
{
public void run()
{
Object localObject1 = null;
int i = 17301659;
int j = 1500; //Score
...
if (localProgressDialog != null)
if (this.val$$$$$$$$arg1 < j) //可以猜出此为定义的分数之一,如不满足则弹出对话框
{
ScoreDialog localScoreDialog1 = this.this$$$$$$$$0;
Cfg.java
[java] view plaincopyprint?
public class Cfg
{...
public static final int HIDDEN_GUANGGAO_NEED_SCORE = 1500; //似乎为显示广告与否的分数门限值
public class Cfg
{...
public static final int HIDDEN_GUANGGAO_NEED_SCORE = 1500; //似乎为显示广告与否的分数门限值
PlayActivity$$$$$$$$12.java
[java] view plaincopyprint?
final class PlayActivity$$$$$$$$12
implements Runnable
{
public void run()
{
boolean bool1 = true;
DialogInterface.OnClickListener localOnClickListener1 = null;
int i = 1500;
但HIDDEN_GUANGGAO_NEED_SCORE并未被其他任何文件应用,但保险起见任然改动此值。
final class PlayActivity$$$$$$$$12
implements Runnable
{
public void run()
{
boolean bool1 = true;
DialogInterface.OnClickListener localOnClickListener1 = null;
int i = 1500;
但HIDDEN_GUANGGAO_NEED_SCORE并未被其他任何文件应用,但保险起见任然改动此值。
2)更改smali文件
smali文件只是将java文件的后缀改为.smali,故可找到上述三文件对应的smali文件
Cfg.smali
[java] view plaincopyprint?
.field public static final HIDDEN_GUANGGAO_NEED_SCORE:I = 0x5DC //此处改为0x0
.field public static final HIDDEN_GUANGGAO_NEED_SCORE:I = 0x5DC //此处改为0x0
PlayActivity$$$$$$$$12.smali
[java] view plaincopyprint?
.method public run()V.locals 6.prologueconst/4 v2, 0x1const/4 v4, 0x0const/16 v3, 0x5DC //此处改为0x0.method public run()V.locals 6.prologueconst/4 v2, 0x1const/4 v4, 0x0const/16 v3, 0x5DC //此处改为0x0
ScoreDialog$$$$$$$$5.smali
[java] view plaincopyprint?
.method public run()V
.locals 10
.prologue
const/4 v7, 0x0
const v5, 0x108009b //对应17301659
const/16 v6, 0x5DC //此处改为0x0
.method public run()V
.locals 10
.prologue
const/4 v7, 0x0
const v5, 0x108009b //对应17301659
const/16 v6, 0x5DC //此处改为0x0
步骤4 将反编译完的文件重新打包成apk文件out.apk
[java] view plaincopyprint?
apktool b c:\out out_raw.apk
apktool b c:\out out_raw.apk
步骤5:对生成的apk签名:
1).准备工具
如没有安装JDK,请在Sun官方网站下载JDKhttp://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,其实仅需要中的Keytool和Jarsigner。
2)、准备签名文件
[java] view plaincopyprint?
“C:\Program Files\Java\jdk1.6.0_24\bin\keytool“ -genkey -alias wendy.keystore -keyalg RSA -validity 20000 -keystore wendy.keystore
“C:\Program Files\Java\jdk1.6.0_24\bin\keytool“ -genkey -alias wendy.keystore -keyalg RSA -validity 20000 -keystore wendy.keystore
注意密码为6位数,如123456。
3签名[plain] view plaincopyprint?
“C:\Program Files\Java\jdk1.6.0_24\bin\jarsigner“ -verbose -keystore wendy.keystore -signedjar out.apk out_raw.apk wendy.keystore
“C:\Program Files\Java\jdk1.6.0_24\bin\jarsigner“ -verbose -keystore wendy.keystore -signedjar out.apk out_raw.apk wendy.keystore
此处需输入第2步的密码123456,执行完即可生成签名后的apk文件out.apk.
至此,破解完成

全部回复 (49)

ID:77600
light_mode
Lv.1 韶华一笑间
2013-04-12 13:41:00 #22
安卓能手组!欢迎你的加入
ID:100979
dark_modedark_modedark_modestar
Lv.1 韶华一笑间
2013-04-18 21:49:00 #23
你牛,我顶!
ID:134140
dark_modedark_modedark_mode
Lv.1 韶华一笑间
2013-04-20 21:19:00 #24
祝安卓论坛越来越好!
ID:48674
light_modestarstar
Lv.1 韶华一笑间
2013-04-23 08:15:00 #25
安卓能手组!欢迎你的加入
ID:125025
dark_modestar
Lv.1 韶华一笑间
2013-04-23 11:16:00 #26
看帖回帖是美德!
ID:6188
light_modestar
Lv.1 韶华一笑间
2013-04-26 22:13:00 #27
你牛,我顶!
ID:91768
light_modedark_modestar
Lv.5 甘首五朝臣
2013-04-27 09:20:00 #28
安卓能手组!欢迎你的加入
ID:100979
dark_modedark_modedark_modestar
Lv.1 韶华一笑间
2013-04-28 06:07:00 #29
安卓能手组!欢迎你的加入
ID:11610
light_modedark_modestar
Lv.2 独赏二月雪
2013-05-01 10:26:00 #30
看帖回帖是美德!
ID:112385
light_modestarstarstar
Lv.2 独赏二月雪
2013-05-01 11:21:00 #31
这帖不错,该顶
ID:117271
dark_modedark_modedark_modestarstar
Lv.1 韶华一笑间
2013-05-02 12:50:00 #32
这帖不错,该顶
ID:83294
light_modestar
Lv.2 独赏二月雪
2013-05-03 21:57:00 #33
安卓我最行!
ID:87909
light_modestarstarstar
Lv.1 韶华一笑间
2013-05-04 01:49:00 #34
这帖不错,该顶
ID:109504
dark_modedark_modedark_modestarstar
Lv.1 韶华一笑间
2013-05-04 04:22:00 #35
安卓我最行!
ID:136221
dark_modedark_modestarstar
Lv.1 韶华一笑间
2013-05-13 20:29:00 #36
你牛,我顶!
ID:86755
light_modestarstar
Lv.1 韶华一笑间
2013-05-26 17:55:00 #37
安卓的世界,我的世界
ID:137437
dark_modestar
Lv.1 韶华一笑间
2013-06-02 18:39:00 #38
有问题!找安能组啊!
ID:98639
dark_modedark_modedark_mode
Lv.1 韶华一笑间
2013-06-04 16:03:00 #39
安卓问题、内信53331
ID:134544
dark_modedark_modestar
Lv.1 韶华一笑间
2013-06-05 12:14:00 #40
安卓问题、内信69344
ID:97066
dark_modedark_modedark_modestarstar
Lv.1 韶华一笑间
2013-06-10 08:47:00 #41
太复杂了啊
登录 后才能回复