好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 fisher 于 2017-5-10 18:21 编辑
0x0 确定目标
以OResearch(单纯形法计算器)为例
工作环境:某遥安卓
作案工具:ApkIDE
0x1 敲“门”问路
现在大多数的思路都是 按字搜索法。
猜想:如果能用“按图索骥”的方法来找“门”,那岂不是美滋滋?
所以这里我采用这种思路来找到“门”
查看当前activity,确定为LpActivity
很容易就找到TA了
还没翻到几行就看见了这样完美的字眼,嘻嘻
[Java] 纯文本查看 复制代码
public void onClick(View paramView)
{
CheckBox localCheckBox = (CheckBox)findViewById(2131558511);
if ((ResearchApp.IS_FREE) && (localCheckBox.isChecked())) {
AndroidUtils.displayFreeAppAlert(this, getString(2131099756), getString(2131099755), getString(2131099844));
}
for (;;)
{
return;
super.onClick(paramView);
}
}
0x3 破门而入
通过上面一翻折腾我们已经能大概确定目标就在ResearchApp.smali
所以我们直接打开,在.method static constructor这里找到了TA
[Java] 纯文本查看 复制代码 .method static constructor <clinit>()V
.locals 1
.prologue
.line 11
const/4 v0, 0x1
sput-boolean v0, Lcom/android/ResearchApp;->IS_FREE:Z
.line 13
const/4 v0, 0x2
sput v0, Lcom/android/ResearchApp;->MAX_FREE_LP_VARS:I
.line 14
const/4 v0, 0x4
sput v0, Lcom/android/ResearchApp;->MAX_FREE_LP_RESTR:I
.line 16
const/4 v0, 0x3
sput v0, Lcom/android/ResearchApp;->MAX_FREE_TP_SIZE:I
return-void
.end method
显然,IS_FREE就是验证当前是否为FREE版,而MAX_FREE_*就是FREE最大可以使用的变量个数
如果是PRO版本,肯定就不需要MAX_FREE_*啦!
尝试做出如下改动
[Java] 纯文本查看 复制代码 .method static constructor <clinit>()V
.locals 1
.prologue
.line 11
const/4 v0, 0x0
#change the default value
sput-boolean v0, Lcom/android/ResearchApp;->IS_FREE:Z
.line 13
const/4 v0, 0x2
sput v0, Lcom/android/ResearchApp;->MAX_FREE_LP_VARS:I
.line 14
const/4 v0, 0x4
sput v0, Lcom/android/ResearchApp;->MAX_FREE_LP_RESTR:I
.line 16
const/4 v0, 0x3
sput v0, Lcom/android/ResearchApp;->MAX_FREE_TP_SIZE:I
return-void
.end method
0x4 关门善后
打包签名就不再赘述了
真♂机试用图
成品
链接: http://pan.baidu.com/s/1o8LkqV4 密码: 52pj
补充一下原文件地址http://www.wandoujia.com/apps/com.simplex
@冥界3大法王 感谢观看~
|
-
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|