跟着鬼哥学so修改,三,作业篇
作业:通过前面两篇文章的学习,请自行分析此应用,将当前用户类型修改为Gold Vip 用户。
有两种以上的方式可以修改的,有兴趣的同学请进行分析,写一下分析记录,可另起文章发布其过程与思路。
明天或者后天,再发布一下分析过程,以及原代码,大家再对比学习一下即可。
--------------------------------------------------------
下载地址:
http://pan.baidu.com/s/1jG22HMY
方法三
把R2的值改为5,测试了下,也可以,上班时间不好一直研究这个,现在才发上来
首先说明下我在安卓逆向这块上完全是新手,新到接触安卓才1个月,也没学过什么语言(当然汉语和英语不算的),研究这个就是觉得有意思,所以很多不懂,描述不准确的,大家可以笑,小声点就行。好了,切入正题
看标题,再结合前两课内容,要改so,那就直接用androidkiller打开apk后,再戳开ida打开“GGTest\Project\lib\armeabi\libgg-jni.so"文件,然后切换到字符串模式,看到以下内容,很直观了(如图1)
图1
再回到IDA视图,打开流程图,看到CMP R2, #1这里有个关键跳转,不相等就是Normal User,相等就是Gold user,那好办,Dwan大神说过这种跳转直接改为相反的即可,那把BEN改为BEQ就好。(如图2)
图2
鼠标点中BNE,再切换到HEW视图,看到对应的十六进制代码是05 D1(如图3)
图3
那BEQ得是多少呢?恰好上面就有个BEQ,再查看它的十六进制代码,是04 D0(如图4)
那就试试把05 D1改为05 D0,再切换到流程图,果然BEN变为了BEQ,说明这样改是对的。那就好办了,用HxD或者其他16进制编辑器打开libgg-jni.so,按ctrl+G跳转到”BNE loc_C5A“所在的行(不知道该不该这样叫,就图3那里),将D1改为D0,保存。回编后安装。
刚开始用的是蓝手指,结果安装没反应,也没提示,莫非改错了。然后又安装鬼哥的原版,还是不行。随即换到海马模拟器,嘿嘿,果然可以了
(如图5)
文中有啥不妥的,大家指正下吧,多谢了
方法2
apk反编译后,搜索"vip",发现有两个结果,第一个看来不是目标,第二个有点意思(如图1)
图1
戳开后,发现是在MainActivity.smali文件下,切换到java源码后,看到一个viplevel(5),我也不懂这是啥意思。打开so后,发现这里也出现了1,2,3,分别对应登机Gold User,Silvery Vip,Copper Vip(图2),没说Normal User对应数字几,那这个5是不是对应的Normal User呢?有可能,Viplevel(5)里出现的5,就该是初始等级吧,那直接把5改为1试试。
图2
回到MainActivity.smali里,将const/4 v0, 0x5 #这里的5改为1试试(图3)。回编安装后,嘿嘿,也可以的
图3
成品
myoldid 发表于 2014-12-19 17:18
方法三
把R2的值改为5,测试了下,也可以,上班时间不好一直研究这个,现在才发上来
挺好的三种方法与思路,赞一个~ myoldid 发表于 2014-12-19 16:03
方法2
apk反编译后,搜索"vip",发现有两个结果,第一个看来不是目标,第二个有点意思(如图1)
可以去我的博客里面找6.5的IDA,看截图,你用的还是6.4以前的版本。
后期这个系列加上动态调试的一些文章,需要6.5的IDA和android_server支持的。 听鬼哥说故事 发表于 2014-12-19 18:20
可以去我的博客里面找6.5的IDA,看截图,你用的还是6.4以前的版本。
后期这个系列加上动态调试的一些文章 ...
好的,我下载一个 00000C480A E0 改的这里
xbing9 发表于 2014-12-19 22:50
00000C480A E0 改的这里
按照你的方法修改后,会指向Silvery Vip 05 d1 改成 05 d0 就可以了
页:
[1]
2