一次工作中APP漏洞挖掘案例-逆向smail分析案例
APP逆向分析登录绕过案例
首先是下载APP程序
发现APP程序可以被反编译
程序并未保护,可被反编译,导致可以自动签名生成新的APK
简单做一下APP逆向分析

搜索\u767b\u5f55\u5931\u8d25
invoke-virtual {p1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
发现这里做了一个调用P1,P2,分别比较Z
从 const-string p2, “\u767b\u5f55\u6210\u529f”
这里开始登录成功
if-eqz p1, :cond_3
goto :goto_0
如果p1相等,那么就跳转到cond_3,接着一个无条件跳转
如果 不相等,否则,执行到
const-string p2, “\u767b\u5f55\u5931\u8d25”
那么要逆向的话,直接执行反方向就可以了
直接if-eqz p1换成 if-nez-p1, :cond_3
无论怎么执行,都是登录成功,达到逆向的目的

APP逆向分析去掉APP更新案例
下载APP,
发现程序并未保护,导致信息泄露漏洞

简单逆向分析一下
比如

不让APP程序更新
实际控制的是common_google_play_services_update_button
跟进一下

找到三处关键的smail代码段
.field public static final common_google_play_services_update_button:I = 0x7f0f0036
可以不用管
直接跟进
sget p1, Lcom/google/android/gms/base/R$string;->common_google_play_services_update_button:I

可以看到,这里就是控制升级的地方了
这里关键控制的是I
有一个调用
sget p1, Lcom/google/android/gms/base/R$string;->common_google_play_services_update_button:I
这个地方,也就是程序会执行更新执行的命令

往上走,都是调用了I
我们查看一下I的方法引用

通过查看方法引用可以发现,这里有一个
common_signin_button_text_long:I
实际也就是触发用户的点击确认更新!
也就是说,默认点击确认更新,既会自动更新APP程序
那么我们想不让他点击确定,就不让他执行方法就可以了
具体做法是
直接把
invoke-virtual {p0, p1}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
引用的方法,注释掉!

这样做的目的,就是不让程序执行自动更新,达到逆向的目的,就写到这里…
近期评论