4、某手游app登陆算法分析【Android逆向分析学习】

学习安卓逆向分析的一个小菜鸟,记录分析的“快乐时光”,小白图个乐,大佬乎喷

分析的APP

泡泡手游


包名:com.zqhy.xiaomashouyou

版本号:8.3.7

最小安装版本:Android 5.0  (LOLLIPOP)

抓包分析

1、用pkid 检测无壳后,直接拖到模拟器中安装

2、打开chales 抓包, 点击登陆页面


输入 13888888888  和密码 :a12345678


获取到抓包信息

4、某手游app登陆算法分析【Android逆向分析学习】_第1张图片

POST /index.php/App/index?api=login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 1309
Host: appapi-ns1.tsyule.cn
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.10.0

data=XB1a7vJ%252F8MevX%252FRKzC4%252FgcOZdZoVlYTAp0atBgQ03GlH4bzKnL849bBWanWnaDVik3A6VZ1X3lctmvp1kVYsNeNO8aWQu7qS72DGWAn%252BvQqBLYP%252FFCurvNdccpcYinyX3zP19wTpnZzx7%252BxKIicY%252BtOv8CR1uLbiJ2cWlDFsCUdI4YktTvaQ2bU3pL0rKvjzrCJKbRrEmOjDhsEbEyEFT8N0fxvFxswX6AazOCrDCyiUr1qf2ax9TLDDI9e82pD6GuTE7jbDNjZn1qVIy9rbOfLNjn6VNRGJOVSV%252BYYIQ0lYfOBJycYAHBh8l6pAu%252F6lOBN6y5eUXVgp2IzyNbyCOAmwsOyuV9vuxgTPNd2ux1JRi4tkE01WtBoOX7eC6wHDwDvzHEkAbPETNHRykH6X8A%252F1nDwq6p5ko94bg5pW3KyX%252F8WoQ0i3C6dup2EVxmmdr9aq3n3VXvrBNSDUKW2OIw1IQ%252Fh9J%252FBSqOj9d9OSFX%252BhUJrS2mpWfQ%252FMmBSOuspjVGntMhE1RYvQxU94pr8I20U4aWDyMrkj3I%252BOPYUNu19XsAJCmLQEHg%252Fk9LMfD1Wfvz%252BkCPSEuQi%252BqRGl21az4bAuHeC4k3xQNTlE13p9tNdpbElSDOmb35Ti5DkSKM5kjCRdBzC0%252Bzc%252BGFYseboSl92DCSDnrBKd%252FBJuqahCocYDnaUNIAJ0BfBgOq8pydFApc6pOmDwcXNYRctztelAI%252FE8%252FD9%252B8HhdVAH6xv%252FYb4SCjU5d5idzqzhYUPui7v%252BEA4AtNkThMT1Ff9YZjpk2rH6377JGVIxRLE9crrwwrdl9Z8JWIamMSvtq02PmWDNXmMMzns7olk709q%252F6pJFSeyoTGhQRxr91cp99Y8XJpTObaXu91WgWw0HCBhk0ttrg5gqGq225ebaA6JMzJKCJVmC%252FmNFmHrQrUsDe2C2lin67xQsG6JmClWZyiceydI236JK2YZPNL1P4rCo9X0flDVmmGAefZw4asep1hgNlEHEmUL3qqYEbFUqaXf1xgKnB1W%252FEuY3pqfdwBy8QWJrRmd8lyUC3xKH6og%252Bir6MhpvybezPTvHZ%252BKkggnj%252B6so60QIlSKsJlPWreRfVuOyLXD2a3Nv3xQZbw%252BfHhkVQGAILm4BXLIroDOtkXUbFn21Vvpm1S7aWrtdo%253D

4、某手游app登陆算法分析【Android逆向分析学习】_第2张图片 

发现信息:


    可以看到 post提交了 一个json 数据


    数据为 data 已经做了URL编码的 base64 


    那么可以想到的是,数据有可能是直接通过 账号密码组合 加上 设备的一些信息 直接进行的加密


    也有可能是  AES des  或者是 RSA 等 加密算法

 

打开 jdax-gui 进行 关键词搜索分析

因为 抓包数据中没有 看到有一些 特别好的关键词搜索 

data 数据包这个关键词 太普遍,搜索到的数据肯定很多


所以直接用 URL地址的 一些参数进行搜搜试试看


直接搜索login 试试看

4、某手游app登陆算法分析【Android逆向分析学习】_第3张图片

直接就出现了300+的数据

在根据 上面的api 等一些参数的结合 


可以定位到这个一行 可能是关键点

 4、某手游app登陆算法分析【Android逆向分析学习】_第4张图片

双击进入后,可以明显的看到 username  和 password 等字样,

那么大概率就是这里了

 4、某手游app登陆算法分析【Android逆向分析学习】_第5张图片

点击 a函数 进入 treemap 里面看看 ,还有哪些参数 

看看是否是直接base64编码的

 4、某手游app登陆算法分析【Android逆向分析学习】_第6张图片

 

跳到a 函数定义的地方,可以看到 data 的 json 关键词参数名

那么 a(map)  这个就是我们需要的数据了,继续按住ctrl 点击跳转

4、某手游app登陆算法分析【Android逆向分析学习】_第7张图片

 4、某手游app登陆算法分析【Android逆向分析学习】_第8张图片

跳转过去a函数后,可以看到密密麻麻的一些参数 ,有些是获取设备的参数,有些估计是系统去做随机处理的参数。

那么我们直接去进行分析这些参数肯定是有问题的,


所以 直接找到加密的点 进行反推至关重要


return URLEncoder.encode(com.zqhy.app.network.d.c.a(com.zqhy.app.network.d.a.a(map)), com.alipay.sdk.sys.a.m);

在最后发现了返回值

 URLEncoder.encode 是在进行URL编码 

那么  com.zqhy.app.network.d.c.a  这个函数  就应该是  加密的数据的地方了

进入进入看看





 4、某手游app登陆算法分析【Android逆向分析学习】_第9张图片

在这里 就可以看到 加密的算法 和 密钥  模式等


SecretKey generateSecret = SecretKeyFactory.getInstance("DES").generateSecret(new DESKeySpec("qn%49E&E".getBytes()));
Cipher instance = Cipher.getInstance("DES/CBC/PKCS5Padding");
instance.init(1, generateSecret, new IvParameterSpec("qn%49E&E".getBytes()));
return b.a(instance.doFinal(bArr));



DES算法   


密钥是:qn%49E&E


加密模式是 CBC

填充方式是  PKCS5Padding

 

知道了加密算法,那么 对 刚才抓包的数据就可以进行解密操作


先通过 精易软件 进行URL解码:


原数据:

XB1a7vJ%2F8MevX%2FRKzC4%2FgcOZdZoVlYTAp0atBgQ03GlH4bzKnL849bBWanWnaDVik3A6VZ1X3lctmvp1kVYsNeNO8aWQu7qS72DGWAn%2BvQqBLYP%2FFCurvNdccpcYinyX3zP19wTpnZzx7%2BxKIicY%2BtOv8CR1uLbiJ2cWlDFsCUdI4YktTvaQ2bU3pL0rKvjzrCJKbRrEmOjDhsEbEyEFT8N0fxvFxswX6AazOCrDCyiUr1qf2ax9TLDDI9e82pD6GuTE7jbDNjZn1qVIy9rbOfLNjn6VNRGJOVSV%2BYYIQ0lYfOBJycYAHBh8l6pAu%2F6lOBN6y5eUXVgp2IzyNbyCOAmwsOyuV9vuxgTPNd2ux1JRi4tkE01WtBoOX7eC6wHDwDvzHEkAbPETNHRykH6X8A%2F1nDwq6p5ko94bg5pW3KyX%2F8WoQ0i3C6dup2EVxmmdr9aq3n3VXvrBNSDUKW2OIw1IQ%2Fh9J%2FBSqOj9d9OSFX%2BhUJrS2mpWfQ%2FMmBSOuspjVGntMhE1RYvQxU94pr8I20U4aWDyMrkj3I%2BOPYUNu19XsAJCmLQEHg%2Fk9LMfD1Wfvz%2BkCPSEuQi%2BqRGl21az4bAuHeC4k3xQNTlE13p9tNdpbElSDOmb35Ti5DkSKM5kjCRdBzC0%2Bzc%2BGFYseboSl92DCSDnrBKd%2FBJuqahCocYDnaUNIAJ0BfBgOq8pydFApc6pOmDwcXNYRctztelAI%2FE8%2FD9%2B8HhdVAH6xv%2FYb4SCjU5d5idzqzhYUPui7v%2BEA4AtNkThMT1Ff9YZjpk2rH6377JGVIxRLE9crrwwrdl9Z8JWIamMSvtq02PmWDNXmMMzns7olk709q%2F6pJFSeyoTGhQRxr91cp99Y8XJpTObaXu91WgWw0HCBhk0ttrg5gqGq225ebaA6JMzJKCJVmC%2FmNFmHrQrUsDe2C2lin67xQsG6JmClWZyiceydI236JK2YZPNL1P4rCo9X0flDVmmGAefZw4asep1hgNlEHEmUL3qqYEbFUqaXf1xgKnB1W%2FEuY3pqfdwBy8QWJrRmd8lyUC3xKH6og%2Bir6MhpvybezPTvHZ%2BKkggnj%2B6so60QIlSKsJlPWreRfVuOyLXD2a3Nv3xQZbw%2BfHhkVQGAILm4BXLIroDOtkXUbFn21Vvpm1S7aWrtdo%3D

URL解码数据:

XB1a7vJ/8MevX/RKzC4/gcOZdZoVlYTAp0atBgQ03GlH4bzKnL849bBWanWnaDVik3A6VZ1X3lctmvp1kVYsNeNO8aWQu7qS72DGWAn+vQqBLYP/FCurvNdccpcYinyX3zP19wTpnZzx7+xKIicY+tOv8CR1uLbiJ2cWlDFsCUdI4YktTvaQ2bU3pL0rKvjzrCJKbRrEmOjDhsEbEyEFT8N0fxvFxswX6AazOCrDCyiUr1qf2ax9TLDDI9e82pD6GuTE7jbDNjZn1qVIy9rbOfLNjn6VNRGJOVSV+YYIQ0lYfOBJycYAHBh8l6pAu/6lOBN6y5eUXVgp2IzyNbyCOAmwsOyuV9vuxgTPNd2ux1JRi4tkE01WtBoOX7eC6wHDwDvzHEkAbPETNHRykH6X8A/1nDwq6p5ko94bg5pW3KyX/8WoQ0i3C6dup2EVxmmdr9aq3n3VXvrBNSDUKW2OIw1IQ/h9J/BSqOj9d9OSFX+hUJrS2mpWfQ/MmBSOuspjVGntMhE1RYvQxU94pr8I20U4aWDyMrkj3I+OPYUNu19XsAJCmLQEHg/k9LMfD1Wfvz+kCPSEuQi+qRGl21az4bAuHeC4k3xQNTlE13p9tNdpbElSDOmb35Ti5DkSKM5kjCRdBzC0+zc+GFYseboSl92DCSDnrBKd/BJuqahCocYDnaUNIAJ0BfBgOq8pydFApc6pOmDwcXNYRctztelAI/E8/D9+8HhdVAH6xv/Yb4SCjU5d5idzqzhYUPui7v+EA4AtNkThMT1Ff9YZjpk2rH6377JGVIxRLE9crrwwrdl9Z8JWIamMSvtq02PmWDNXmMMzns7olk709q/6pJFSeyoTGhQRxr91cp99Y8XJpTObaXu91WgWw0HCBhk0ttrg5gqGq225ebaA6JMzJKCJVmC/mNFmHrQrUsDe2C2lin67xQsG6JmClWZyiceydI236JK2YZPNL1P4rCo9X0flDVmmGAefZw4asep1hgNlEHEmUL3qqYEbFUqaXf1xgKnB1W/EuY3pqfdwBy8QWJrRmd8lyUC3xKH6og+ir6MhpvybezPTvHZ+Kkggnj+6so60QIlSKsJlPWreRfVuOyLXD2a3Nv3xQZbw+fHhkVQGAILm4BXLIroDOtkXUbFn21Vvpm1S7aWrtdo=

4、某手游app登陆算法分析【Android逆向分析学习】_第10张图片

然后通过 wt软件进行 解密操作

最终获取到的数据:
 1subtd=7af5e686ddf77c22&api=login&appid=995011&client_type=1&device_id=7af5e686ddf77c22002233fb&device_id_2=2318646454b500733f3d9d1293512cc6&imei=865166028263419&ip=172.16.1.112&is_special=0&mac=please+open+wifi&oaid=&oldtgid=ga8104004&password=a12345678&reyun_device_id=unknown&sign=1BB9562722842A8533BA54986B4F663E&tgid=ga8104004&ts_device_brand=HUAWEI&ts_device_id=a80fc043-02dc-33af-afb9-b9ae1d2e2e89&ts_device_id_2=7af5e686ddf77c22002233fb&ts_device_model=TAS-AL00&ts_device_version=7.1.2&ts_device_version_code=25&ts_imei=865166028263419_865166028263419_865166028263419&ua=Mozilla%2F5.0+%28Linux%3B+Android+7.1.2%3B+TAS-AL00+Build%2FN2G48C%3B+wv%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Version%2F4.0+Chrome%2F68.0.3440.70+Mobile+Safari%2F537.36&umeng_device_id=865166028263419&username=13888888888&uuid=7af5e686ddf77c22002233fb&vc=1&version=83700

URL解码后的数据:

 1subtd=7af5e686ddf77c22&api=login&appid=995011&client_type=1&device_id=7af5e686ddf77c22002233fb&device_id_2=2318646454b500733f3d9d1293512cc6&imei=865166028263419&ip=172.16.1.112&is_special=0&mac=please+open+wifi&oaid=&oldtgid=ga8104004&password=a12345678&reyun_device_id=unknown&sign=1BB9562722842A8533BA54986B4F663E&tgid=ga8104004&ts_device_brand=HUAWEI&ts_device_id=a80fc043-02dc-33af-afb9-b9ae1d2e2e89&ts_device_id_2=7af5e686ddf77c22002233fb&ts_device_model=TAS-AL00&ts_device_version=7.1.2&ts_device_version_code=25&ts_imei=865166028263419_865166028263419_865166028263419&ua=Mozilla/5.0+(Linux;+Android+7.1.2;+TAS-AL00+Build/N2G48C;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/68.0.3440.70+Mobile+Safari/537.36&umeng_device_id=865166028263419&username=13888888888&uuid=7af5e686ddf77c22002233fb&vc=1&version=83700

 

这里可以看到 写的手机号码  和尼玛  等数据


但是 不知道为啥  有不可显示字符,

 1subtd=7af5e686ddf77c22
api=login
appid=995011
client_type=1
device_id=7af5e686ddf77c22002233fb
device_id_2=2318646454b500733f3d9d1293512cc6
imei=865166028263419
ip=172.16.1.112
is_special=0
mac=please+open+wifi
oaid=
oldtgid=ga8104004
password=a12345678
reyun_device_id=unknown
sign=1BB9562722842A8533BA54986B4F663E
tgid=ga8104004
ts_device_brand=HUAWEI
ts_device_id=a80fc043-02dc-33af-afb9-b9ae1d2e2e89
ts_device_id_2=7af5e686ddf77c22002233fb
ts_device_model=TAS-AL00
ts_device_version=7.1.2
ts_device_version_code=25
ts_imei=865166028263419_865166028263419_865166028263419
ua=Mozilla/5.0+(Linux;+Android+7.1.2;+TAS-AL00+Build/N2G48C;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/68.0.3440.70+Mobile+Safari/537.36
umeng_device_id=865166028263419
username=13888888888
uuid=7af5e686ddf77c22002233fb
vc=1
version=83700
一共数了一下 29个参数点

参数还是挺多的

然后发现 还有一个 sign 参数是加密

应该是一个MD5的算法  可以直接用 frida hook 一下就行

你可能感兴趣的:(#Android逆向分析笔记,android,算法,java,逆向)