首页
社区
课程
招聘
[原创]安卓协议逆向之frida hook百例二
发表于: 2022-11-14 14:18 25627

[原创]安卓协议逆向之frida hook百例二

2022-11-14 14:18
25627

各位大佬好 我是一位往Android安全方向走的小菜鸟一枚 目前也是很努力在学 这个系列也会一直更新 记录自己的学习过程 大佬多担待担待 有出错的地方也帮忙指出

此处为fd抓的password login提交

提交的data

这时可以想一下 我们是password登陆的 那他必然会提交username和password

1. pycharm(python,JavaScript)
2.安卓模拟器(觉得哪个好用就用哪个)
3.frida配置(frida是配置在python的)
1. pycharm(python,JavaScript)
2.安卓模拟器(觉得哪个好用就用哪个)
3.frida配置(frida是配置在python的)
1.jadx-gui (反编译工具)
2.ApkScan-PKID(查壳工具)
3.反射大师(脱壳工具)
4.fiddler(抓包工具)
(这期就差不多这么多工具 后面用到其他工具会贴出来)
1.jadx-gui (反编译工具)
2.ApkScan-PKID(查壳工具)
3.反射大师(脱壳工具)
4.fiddler(抓包工具)
(这期就差不多这么多工具 后面用到其他工具会贴出来)
LS4tLi0tLi4uLi0tLS0tIC0uLS4tLS4uLi4tLS0tLSAtLS0uLi0uLi0uLS0uLS0=
(题目:base对莫尔斯的升华)
LS4tLi0tLi4uLi0tLS0tIC0uLS4tLS4uLi4tLS0tLSAtLS0uLi0uLi0uLS0uLS0=
(题目:base对莫尔斯的升华)
 
 
Encrypt 就一个那好吧
Encrypt 就一个那好吧

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 7284
活跃值: (22080)
能力值: ( LV12,RANK:550 )
在线值:
发帖
回帖
粉丝
2
支持一下
2022-11-14 20:42
0
雪    币: 58
活跃值: (274)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

加上 app 的版本号会更好些哦

最后于 2022-11-16 15:09 被gwljt编辑 ,原因:
2022-11-16 15:09
0
雪    币: 172
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
加油加油!
2022-11-20 16:17
0
雪    币: 58
活跃值: (274)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

模拟登录代码:

from pyDes import CBC, PAD_PKCS5
import time
import base64
import hashlib
import requests

from pyDes import des

"""
加密模式:DES/CBC/pkcs5padding
需pip先安装依赖包
> pip install pyDes
"""

'''
验证:
input
{"equtype":"ANDROID","loginImei":"Android354360070284377","sign":"A8AADB717E1F56B325B3687390C6D069","timeStamp":"1669179310106","userPwd":"edcrfv","username":"13812314569"}


output:
NIszaqFPos1vd0pFqKlB42Np5itPxaNH//FDsRnlBfgL4lcVxjXii3Rz/9qjO8lywAYy6K8YcoQQaOeqZllR9aQXPwOWajsJhvKph1pq0iyaNSw3afbO9E7kophIxKQfL0XlEWx8lfdK6fYvf7zMIP6Lz3UAAgvqw/FmjRRwynKcs8cOxBoHTiP8z0cXK6S8/SiRnPFjHrYy2YyGyxlQziNAC2XVutFoMpbzwE5prao=

'''


def get_md5(s):
    m = hashlib.md5(s.encode())
    return m.hexdigest()

# com.autohome.ahkit.utils.SecurityUtil.iv
iv = '32028092'

import json
# c3d26dca86259782
key = '65102933'
key = get_md5(key)
# 这里需要转换成byte的hex值
# fromhex函数,用来将hexstr导入bytes对象,相当于用hexstr来创建bytes对象。
key = bytes.fromhex(key)


def fill_timeStamp():
    config = {'equtype': 'ANDROID',
    'loginImei': 'Android354360070284377',
    'userPwd': 'edcrfv',
    'timeStamp':str(int(time.time()* 1000)),
    # 'timeStamp':'1669179310106', # 验证是否正确
    'username': '13812314569'}
    return config



def fill_sign(config):
    s = 'equtype={equtype}&loginImei={loginImei}&timeStamp={timeStamp}&userPwd={userPwd}&username={username}&key=sdlkjsdljf0j2fsjk'
    s = s.format(**config)

    sign = get_md5(s).upper()
    config['sign'] = sign

    return config

def get_json_str():
    config = fill_sign(fill_timeStamp())
    # json后 , separators=(',', ':')=> 删除 ,与:之间是有空格的
    # json后 , sort_keys=True=> 按字典的key排序
    return json.dumps(config, sort_keys=True, separators=(',', ':'))

def des_encrypt(s, key=key, iv=iv):
    """
    DES 加密
    :param s: 原始字符串
    :param key: 加密密钥24位
    :return: 加密后字符串, base64
    """
    key8 = key[:8]
    k = des(key8, CBC, iv, pad=None)
    en = k.encrypt(s.encode(), padmode=PAD_PKCS5)
    return base64.b64encode(en).decode()

# print(des_encrypt(get_json_str()))


header = { 
    "Host": "api.dodovip.com",
    "cache-control": "public, max-age=0" , 
    "content-type": "application/json; charset=utf-8",
    "user-agent": "Dalvik/2.1.0 (Linux; U; Android 10; SM-N9600 Build/QP1A.190711.020"
}

def login():
    url = "http://api.dodovip.com/api/user/login"

    data = {
        'Encrypt': des_encrypt(get_json_str())
    }
    res = requests.post(url,headers=header,json=data)
    print(res.text)

login()

2022-11-23 14:38
0
雪    币: 171
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6

想知道加密解密用的软件叫啥名字。

最后于 2022-11-24 15:15 被liukuo362573编辑 ,原因:
2022-11-24 13:49
0
雪    币: 58
活跃值: (274)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
liukuo362573 想知道加密解密用的软件叫啥名字。
WT-JS_DEBUG
2022-11-27 12:52
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
请问一下作者遇到app监测root 无法用反射大师获取到dex 该怎么办
2022-11-30 16:02
0
游客
登录 | 注册 方可回帖
返回
//