A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

像我这样的,一天到晚都往外跑,坐车坐好久,等人等好久的。其实这些时间都是浪费的。这些时间如果能够合理分配。用来学习复习。效果还是蛮好的。

但手机上药进行学习的话也不是太方便,今天给大家带来一个软件。java学习手册。市场上评价应该是最好的java学习app了。
PS:这个软件是积分制的,里面看资料需要积分,这样当然不是我们想要的。所以xx之。
PSS:我不是来打广告的。我发的是破解版,顺带写一下破解的过程。不想看废话的请无视之,直接去楼底下载破解好的APP。

大J8有人发过破解教程。我的做法基本相同,工具略有不同。发上来大家看看,以后有需要破解app就可以自己动手之。
在此鸣谢J8的"Sundstr_m"童鞋。

现在要破解android上的APP其实难度真的越来越低了。一般的流程就是解包,反编译,修改源码,打包,签名,搞定。
我这次用到的是ApkTool+dex2jar+jd-gui的集成工具--Apk改之理。大家可以自行百度这个软件。
首先,要破,得知道破什么。对吧。打开未破的软件来看看先。
软件的UI还是挺不错的哦。


分类挺详细的,点开分类里面就有各种资料了。但是需要积分,差评之。



随便点开一篇文章,就会转到这个界面了。积分不足,要你下载别的软件获取积分or购买正式版。
于是,我们破之。



先来分析下,程序的运行流程,这里用到了eclipse了。去Android官网下载整合了sdk的eclipse即可了。
打开eclipse,第一次打用的话,window-show view。把logcat调出来.

logcat的输出信息太多,我们过滤一下,找到那个绿色的加号,添加过滤:

name随便下,Tag就是我们要过滤的标签,按照我们这个程序的运行情况来看,它是再点击文章的时候先检测你的积分。
然后积分不够的话,就会跳转到获取积分的界面,有点android基础的童鞋都知道,这些界面都是activity来的。
所以就过滤下AvtivityManager来看看Activity的跳转情况来着。


输出还是太多,点一下上面框框的info。

打开程序,再次点进文章,看看log:

当程序跳转到了获取积分的界面的时候,就跳转到了AwrdActivity这个activity上了。
下面使用xx工具,反编译软件。打开APK改之理:


软件的使用太简单,太傻瓜化了,不多说,直接打开要xx的app就会自动反编译了


我们不是查出来时跳转到了AwrdActivity了吗?
直接根据app的包名就找到了AwrdActivity的smali文件。打开之。
反编译出来呢,我们具体要修改的其实是smali文件,smali是什么东西,可以百度哦。
里面的代码看不懂?不要紧。。我也看不懂多少。我们懂java就行。


直接选择编辑,打开java源码。就会调用jd-gui来打开反编译出来的源码了。



jd-gui是一个利器啊。直接打开了AwrdActivity的源码。我们来观察下。不懂android也不要紧。还是那句,我们懂java就行。
在这里,我们有两个选择,第一,可以继续根据源码来查找时从何处开始跳转的。
因为跳转前肯定会判断你的积分是否不足,那么我们在跳转前的判断出修改判断的条件就可以达到目的。
但是我通过观察AwrdActivity这个类呢,选择了第二种方式。
在获取积分的界面呢,你可以看到有两个东西,一个需要200积分,一个需要700积分。
在AwrdActivity里面就有两个方法分别叫"init200"和"init700"。
未破解前你在软件中点那两个东东,会提示你余额不足,那么就是说,这两个方法内肯定也有判断积分是否不足的方法。
我们直接观察:


整个方法内,第二句代码就开始条件判断了,判断的条件表达式是数值,应该就是积分了。那么第一句就肯定是获取当前积分的。
那么根据这个思路,我们直接修改当前积分不是更方便咯?继续下一步。



init200方法内的第一句代码是通过另一个方法的返回值来赋值的。在AwrdActivity内找到这个方法。
这个方法只有一句代码,是调用了PointManager这个类的queryPoints方法了。

直接点击PointManager。观察它的源码。找到queryPoints方法。也是只有一句。加上一个返回值。

那么我们就直接在这里动手吧。不选择在AwrdActivity动手,是因为考虑到应该会有其他地方会调用PointManager的。所以我们在源头动手


回到APK改之理,打开PointManager的smali文件。找到queryPoints。



其他代码我们可能看不懂,但是我们查看java的源码看到他是有返回值的嘛。那么return我们总能看懂咯?上面的第一个return就是返回值咯。
v0明显应该就是被返回的返回值内容了。那么我们在其返回前修改其值即可。
怎么修改呢?还是查一下smali的语法吧。。经过百度,要赋值的语法就是图中框框的第二句了。赋值的数值是16进制的。
最后到底行不行呢?重新编译,安装,运行看看呗。


重新安装软件之后,跳转到了获取积分的界面,点激活所有模块。不再提示余额不足了。
选择确认、


所有模块激活成功。


还可以尝试去获取正式版哦。这个文本框没有做安全处理,空值和非邮箱都可以发送。差评之。。


最后看下我的积分?1000分。证明修改成功。
但是。。。但是真的修改成功了吗?
没错的。基础知识那边的所有模块现在都可以看了,不会再跳转到获取积分了。但是。这个软件还有第二页呢。。
打开第二页看看:

点上面那三个发现。。居然没破掉。。好吧,继续xx之。
根据“200积分”这个关键词搜索。不在资源文件中,那么肯定是写在了类中。


在jd-gui中搜索找到了MainActivity中,通过观察发现,它也是做了判断,也是调用了PointManager。。但是是另一个spendPoints的方法。


来到PointManager中观察spendPoints。发现和上面修改的很相似,只不过改成了布尔值。那么就好办了,同样的步骤操作之。


在smali文件中,找到spendPoints,在返回值返回前修改其值。百度smali的语法。布尔值的赋值就是如图。布尔值只能是0x0或者0x1.
改成0x1。让它一直返回真。重新编译,安装测试。


这次就可以了,全部功能可用了。



里面的面试宝典,准备面试的额童鞋可以看一看,看起来方便,其实就是张孝祥老师的java面试宝典。不过看起来比word方便啊。
还有在手机上查一下API还是超级方便的说。
最后发现,其实一开始,我就直接修改spendPoints这个方法就好了。。悲剧之。

最后就是这个APP的附件了。
http://pan.baidu.com/s/11grMP

评分

参与人数 2技术分 +2 收起 理由
EYE_SEE_YOU + 1 赞一个!
乔兵 + 1 很给力!

查看全部评分

33 个回复

倒序浏览
谢谢。。一直想找个移动端的学习软件
回复 使用道具 举报
哈哈,挺精彩哟,轻松破之
回复 使用道具 举报
多谢分享了,辛苦了,不过红米一直没抢到,所以一直无缘用智能手机。
回复 使用道具 举报
{:soso_e100:}
回复 使用道具 举报
附件是破解后的吗?
回复 使用道具 举报
周先 初级黑马 2013-9-25 19:10:48
7#
唉,连地板都没抢到,不过还是看到好东西了
回复 使用道具 举报
gulup 中级黑马 2013-9-25 19:26:41
8#
垂天云 发表于 2013-9-25 18:50
附件是破解后的吗?

是的。 。
回复 使用道具 举报 1 0
貌似很犀利的样子
回复 使用道具 举报
急需要啊。。。。。。。。。。
回复 使用道具 举报
给力,原来一直花积分看的
回复 使用道具 举报
高端大气上档次
回复 使用道具 举报
真厉害啊
回复 使用道具 举报
低调奢华有内涵
回复 使用道具 举报
我也有,只可惜也是积分制的。
回复 使用道具 举报
挺详细的过程,写得很不错,学习了
回复 使用道具 举报
好教程。拿了,蹲厕所
回复 使用道具 举报
小伙伴们,赶紧破之!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
用手机好好好看看捣鼓捣鼓
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马