最近在论坛内潜水多日,看到了很多大神所写的关于apk反编译破解程序的帖子,感到受益匪浅。恰逢最近在玩 “学生赚”,于是反编译试试,居?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?然成功了!侥幸破解了部分内容,欢迎高手前来指正。如果是打酱油的高手路过,请继续去打酱油,当然也欢迎围观。转载请注明出处。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 首先介绍一下破解所需工具:1.apktool.exe,2.学生赚的apk。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?附录;学生赚破解后下载地址 http://pan.baidu.com/s/1pJqFQvL
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?打开,为apptool.exe的界面?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?apktool是一款功能强大且操作简单的apk反编译破解工具。。。图形化界面没什么好解释的! 唯一需要注意的是,反编译过程中应避免中文路径?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?和中文文件名。 功能: 1. 反编译APK文件,生产到同名目录中。 2. 将反编译的APK重新编译,在当前目录生成2个文件,1个签名的和一个未签?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?名的。 3. 反编译dex(odex)转smali文件 4. 将反编译的dex、odex 重新编译成dex文件 5. 将dex转成jar 。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?一、反编译?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?将学生赚apk更名为123.apk (程序名称不能为汉字)?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?输入apk地址,进行反编译,如下图:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?编译后获得同名文件夹123.?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?assets文件夹里面的文件都是保持原始的文件格式?
lib文件夹里面的就是相应的so格式文件?
res文件夹主要是一些资源文件 "resource" 包括你工程里要导入的所有界面背景、工具栏的图标,还有一些向导生成时自动添加的资源?
AndroidManifest.xml文件里包含了软件名称、版本、权限、引用的库文件等信息。?
smali文件夹下存放反编译后的源码文件*.smali?
二,修改源程序 (重点)?
由于这个软件每天仅有一次免费摇奖,而有十次付费摇奖。虽然他们摇奖对应程序不同,但是摇奖的机理是相同的。因此,可以将付费摇奖以免?
费摇奖方式表示,即可以免费摇奖十次。?
浏览一下解压所得文件夹,发现摇奖所在文件夹为1.3.6123reslayoutshake_activity1.xml?
学生赚破解教程_学生赚破解版
具体代码为?
android:layout_width "fill_parent" android:background "@color/GreyThem" android:orientation "vertical"> TextView android:layout?
_height "wrap_content" android:layout_width "wrap_content" android:layout_centerHorizontal "true" android:text "查询最新中大奖?
名单" android:id "@id/TextView_yaojiangrank" android:textColor "@color/GreenThem" android:textSize "16.0sp"/>ImageView android:?
layout_centerInParent "true" android:layout_height "wrap_content" android:layout_width "wrap_content" android:id "@id/shakeBg" ?
android:contentDescription "@string/app_name" android:src "@drawable/shakehideimg_man2"/>- LinearLayout android:layout_centerIn?
Parent "true" android:layout_height "wrap_content" android:layout_width "fill_parent" android:orientation "vertical" android:id?
?"@id/LinearLayout_yaopic2">- 【RelativeLayout android:layout_height "180.0dip" android:layout_width "fill_parent" android:backg?
round "@color/GreyThem" android:id "@id/shakeImgUp"> 【ImageView android:layout_height "wrap_content" android:layout_width "wrap?
_content" android:layout_centerHorizontal "true" android:contentDescription "@string/app_name" android:src "@drawable/shake_log?
o_up" android:layout_alignParentBottom "true"/> 【/RelativeLayout>- 【RelativeLayout android:layout_height "180.0dip" android:lay?
out_width "fill_parent" android:background "@color/GreyThem" android:id "@id/shakeImgDown"> 【ImageView android:layout_height "w?
rap_content" android:layout_width "wrap_content" android:layout_centerHorizontal "true" android:contentDescription "@string/app?
_name" android:src "@drawable/shake_logo_down"/> 【/RelativeLayout> 【/LinearLayout>- 【LinearLayout android:layout_height "wrap_c?
ontent" android:layout_width "fill_parent" android:orientation "vertical" android:layout_alignParentBottom "true"> 【TextView an?
droid:layout_height "wrap_content" android:layout_width "wrap_content" android:text "付费摇一摇:已摇 【0】次,剩余 【10】次" and?
roid:id "@id/text_fufeiyaoyiyao" android:textColor "#ffff0000" android:textSize "13.0sp" android:paddingLeft "10.0dip"/> 【TextV?
iew android:layout_height "wrap_content" android:layout_width "wrap_content" android:text "@string/yaoyiyao1" android:id "@id/t?
ext_yaoyiyao" android:textColor "#ffff0000" android:textSize "13.0sp" android:paddingLeft "10.0dip"/> 【/LinearLayout> 【/Relativ?
eLayout>?
由 "@id/text_fufeiyaoyiyao知道其值所对应id为 "@id/text_fufeiyaoyiyao?
在123文件夹中查找text_fufeiyaoyiyao?
找到文件123resvaluespublic.xml?
在文件中搜索,发现有dayyaoyiyao 和fufeiyaoyiyao 两个值,即对应前文所讲两个摇奖。将两个互换,即完成了两个程序的交换?
学生赚破解教程_学生赚破解版
需要注意,smali文件中也有程序要改 这个是Dalvik opcodes,修改它需要一点专业知识 (参考这里), 修改成如下 (后来发现似乎只需要将最?
后的 return v0 改成 return 1 就可以了,不过没去做测试,对Dalvik opcodes尚未仔细研究过):?
.method public static isSdPresent()Z?
.locals 2?
.prologue?
.line 476?
const-string v0, "mounted"?
const-string v1, "mounted"?
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z?
move-result v0?
return v0?
.end method?
改后因为v0始终等于v1,所以这个方法就返回True,这样就欺骗程序我们付费抽奖实为每日摇一摇。?
注意这个方法返回的是一个java.io.File对象,而不是字符串,修改时要注意这一点。所以用UltraFileSearch搜索包含"getExternalStorageDir?
ectory"的文件 (主要是.smali文件),针对思维导图这个程序会搜索到App.smali和FileIO.smali二个文件,分别打开修改。具体对于App.smali?
相关内容如下 (FileIO.smali也是类似):?
.line 246?
:cond_0?
new-instance v2, Ljava/lang/StringBuilder;?
invoke-direct {v2}, Ljava/lang/StringBuilder;->()V?
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;?
move-result-object v3?
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;?
move-result-object v2?
sget-object v3, Ljava/io/File;->separator:Ljava/lang/String;?
把它修改成如下:?
.line 246?
:cond_0?
new-instance v2, Ljava/lang/StringBuilder;?
invoke-direct {v2}, Ljava/lang/StringBuilder;->()V?
const-string v3, "/flash"?
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;?
move-result-object v2?
sget-object v3, Ljava/io/File;->separator:Ljava/lang/String; 三、重新编译程序?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 修改完成后,回到apktool.exe窗口,键入重新编译的命令:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? apktool b ThinkingSpacePro ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 第一次编译会出状况,后来发现是源码中的AndroidManifest.xml这个配置文件有问题,在这个文件的倒数第二行:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<supports-screens android:anyDensity "true" android:smallScreens "true" android:normalScreens "true" android:largeScreens "true?
学生赚破解教程_学生赚破解版
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" android:xlargeScreens "true" android:resizeable "true" />?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 问题就出在那个android:xlargeScreens "true"上,好像不支持吧。所以删掉它,变成:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<supports-screens android:anyDensity "true" android:smallScreens "true" android:normalScreens "true" android:largeScreens "true?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?" android:resizeable "true" />?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 再次重新编译,成功。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 这时候工作都基本完成了,不过,这个生成的apk程序还不能直接安装使用,因为缺少签名。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 四、签名?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 还是运行apktool.exe,其中的第三项即为签名。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 全当抛砖引玉,你可能有不同的目的来修改原程序,不过万变不离其宗,大致如此。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果你仍然不知道我上面改来改去到底在改什么,安装我的修改版,看能否正常运行和使用了。?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 附录;破解后文件下载地址 http://pan.baidu.com/s/1pJqFQvL