最近破解的几个安卓应用,爆破点都是通过抓包找到的。
所以写一遍安卓抓包、破解的文章,谨供小菜参考,大虾们别见笑~
用到的工具:电脑端:Androidkiller,Charles
手机端:就是Android手机1台
0x0 安卓抓包&破解前准备--环境搭建
抓包工具我就用过Fiddler和Charles,后者好像好用点,所以本文用到的工具是它。
电脑端操作:
1.安装Charles。
端口默认8888,记下,备用。
2.确认电脑的IP地址:
运行--cmd--输入ipconfig--回车
记下IP地址,备用。
手机端操作:
1.手机连接wifi后,进行"修改网络配置"操作,如下图。
2.手动设置代{过}{滤}理,如下图。
注意代-理主机填刚才记下的电脑IP地址,端口保持与Charles上的一致,即8888
之后用数据线连接手机和电脑,电脑打开Charles,手机打开个网页测试是否成功。
0x1 安卓抓包&破解例子1--以假乱真
例子是之前发布了的O2听书。
先通过以下修改,令返回值为"真",即可变成vip版:
[XML] 纯文本查看 复制代码
.method public static b(Landroid/content/Context;)Z
.locals 3
.prologue
.line 250
invoke-static {}, Lcom/anysoft/tyyd/g/a;->e()Ljava/lang/String;
move-result-object v0
const-string v1, "is_vip_member"
const/4 v2, 0x0
invoke-static {p0, v0, v1, v2}, Lcom/anysoft/tyyd/g/b;->b(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Z)Z
move-result v0
const/4 v0, 0x1
#返回真
return v0
.end method
然而打开vip书籍,还是要付费!
可能我的计谋被服务器识破了,它知道我是冒牌vip,还要我付费。
所以还得修改。(其实已经是本地vip了)
----------------------------------抓包1-----------------------------------
打开某本会员区的小说后,我们观察Charles上的数据。如下图。
通过点击红色圈的选项,我们可以直接在Charles上看页面内容。
链接为:好长的网址。你们也可以打开看看。
我截取了一部分:
[XML] 纯文本查看 复制代码
<audio id="637246" name="越女剑03" length="334" isFree="true" price="0.1" readPoints="10" pointScore="500" isUpdate="0" lrcUrl="" OrderId="3" isLive="0" liveAudioSDT="" liveAudioEDT="">...</audio>
<audio id="637247" name="越女剑04" length="359" isFree="false" price="0.1" readPoints="10" pointScore="500" isUpdate="0" lrcUrl="" OrderId="4" isLive="0" liveAudioSDT="" liveAudioEDT="">...</audio>
可以看出"isFree"是关键点。
----------------------------------破解1-----------------------------------
Androidkiller反编译并搜索"isFree",再做如下修改即可:
[XML] 纯文本查看 复制代码
iget-object v0, p1, Lcom/anysoft/tyyd/http/jc;->a:Ljava/util/HashMap;
const-string v1, "isFree"
invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Ljava/lang/String;)Ljava/lang/Boolean;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
const/4 v0, 0x1
#返回真
iput-boolean v0, p0, Lcom/anysoft/tyyd/http/ch;->h:Z
回编译--测试--成功!所有会员书籍免费了。
0x2 安卓抓包&破解例子2--狸猫换太子
例子是之前发布的Windows桌面
精品主题要50魔豆,好贵,所以改一下。
----------------------------------抓包2-----------------------------------
我们打开某个已经购买了的主题,观察Charles上的数据。如下图。
为方便起见,把链接复制下来:
http://www.moban.com/tools/GetThemeDetail.aspx?id=56599&UserName=52spguangz 然后用浏览器打开:
关键是
<modou>50</modou>
<status>buy</status> 一个是主题需要的魔豆数,一个是购买的状态。可是通过各种修改后,还是要付费。
所以我换了个思路:把UserName换掉,会怎么样?
即通过把
http://www.moban.com/tools/GetThemeDetail.aspx?id=56599&UserName=52spguangz 换成其他的链接,观察<modou>和<status>的变化。
通过几次修改发现,当UserName叫"1"或者叫"2"时(或者其他),
即改为
http://www.moban.com/tools/GetThemeDetail.aspx?id=56599&UserName=1 打开后变为
<modou>0</modou>
<status/> 对,免魔豆了,可能这个"1"是作者的系统号。
----------------------------------破解2-----------------------------------
因为其他诸如modou,status等变量会随着username的改变而改变
那么修改username就行了吧。
Androidkiller反编译并搜索username=
看到这个BuyTheme(购买主题),点进去看看。
果然是这里,修改如下:
[XML] 纯文本查看 复制代码
# virtual methods
.method public onClick(Landroid/content/DialogInterface;I)V
.locals 8
.param p1, "dialog" # Landroid/content/DialogInterface;
.param p2, "whichButton" # I
.prologue
.line 2662
new-instance v0, Ljava/lang/StringBuilder;
sget-object v1, Lcom/mobilewindowcenter/Setting;->WebRoot:Ljava/lang/String;
invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const-string v1, "tools/BuyTheme.aspx?username="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v1, p0, Lcom/mobilewindowcenter/DecorCenter$7;->val$act:Landroid/app/Activity;
invoke-static {v1}, Lcom/mobilewindowcenter/Setting;->getUserInfo(Landroid/content/Context;)Lcom/mobilewindowlib/data/UserInfo;
#获取用户信息
move-result-object v1
iget-object v1, v1, Lcom/mobilewindowlib/data/UserInfo;->mUserName:Ljava/lang/String;
#读取用户名字
const-string v1, "1"
#令用户名为"1"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "&themeid="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v1, p0, Lcom/mobilewindowcenter/DecorCenter$7;->val$info:Lcom/mobilewindowcenter/DecorCenter$PayInfo;
iget-object v1, v1, Lcom/mobilewindowcenter/DecorCenter$PayInfo;->id:Ljava/lang/String;
#读取主题id
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "&modou="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v1, p0, Lcom/mobilewindowcenter/DecorCenter$7;->val$info:Lcom/mobilewindowcenter/DecorCenter$PayInfo;
iget v1, v1, Lcom/mobilewindowcenter/DecorCenter$PayInfo;->modou:I
#读取魔豆数量
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
//省略
return-void
.end method
回编译--测试--成功。所有主题免费了。
本文结束,写得有点简陋了。感谢观看。
ps:待会记得把手机上的代-理改为"无",否则手机就上不了网了
|