移动应用开发的方式,目前主要有三种
- Native App: 本地应用程序(原生App)
- Web App:网页应用程序(移动web)
- Hybrid App:混合应用程序(混合App)
Hybrid APP混合开发好处
- 移动终端web壳(以下简称“壳”):壳是使用操作系统的 API 来创建嵌入式 HTML的渲染引擎。壳主要功能是定义Android应用程序与网页之间的接口,允许网页中的JavaScript调用Android应用程序,提供基于web的应用程序的Android API,将Web嵌入到Android应用程序中。
- 前端交互js:包括基础功能js和业务功能js。
- 前端适配器:适配不同的终端:Pad、android、ios、wap。
混合开发层次结构图
详细介绍请看原文,摘抄自Hybrid APP混合开发的一些经验和总结
逆向过程
- 通过搜索
mobile、zuid
到找不到结果。
- 既然是网页版的,那么首先在网页上执行登录操作,但是一直登录中没有结果猜测加密在安卓上由js调用安卓内部方法。查看网页源代码有个
analyticsEvent
方法,在app源码中进行搜索。
- 继续追踪
com.zz.common.a.a.a
方法
- 分析代码后发现
k.b
方法是Log输出,对其hook结果如下。
[*] get_a1:==========================jsb loadUrl :javascript:__JavascriptBridge__.javaCallback("1586855536672", {"beforeEncryptedData":"9667243845","methodName":"encrypt","reqId":"1586855536672","encryptedData":"314e73314a394730426c66386d6c4730514f713757347042752f6d79446f6f566b37637a715064535032513d","type":"encrypt","resId":"1586855536672"})
- 猜测其机密方法为
encrypt
,接着搜索。
- 继续分析
g.a(f.l(), b)
方法
-
hook该方法
- 抓包中的
mobile
参数和hook的返回值相同,说明猜测是对的,接下来找的hook的第一个参数即f.l()
,经分析后,这个f.()返回的是固定值。至此分析结束。
网友评论