记一次失败的逆向&未完待续???
据说失败是成功之母。。汪汪汪。。
于是记录下这次失败的逆向过程。。汪汪汪。。
希望有朝一日能够成功~蠢真脸。
一次逆向获取接口的过程
抓包过程
返回的值做一些处理可以得到查询者的个人信息~
这些值不会变动一次获得可以反复使用~
以上已经验证~所以现在只要知道每个参数应该怎么填写就可以了
逆向apk搜索关键字
使用的工具是apkIDE 和 jadx
接下来就是搜索定位关键代码。首先通过反复抓包可以定位些固定值。这样我们除去了:
username,是提交的信息,
signatureMethod signatureVersion format appId 是固定值,
timestamp 为时间戳。
所以只剩下了
signatureNonce signature
逆向中没有 .so文件 所以加密算法应该都存在于代码中。
1 | public static String doPost(String url, String appId, String appKey, Map<String, String> params, String agent) throws Exception { |
发现”signatureNonce”是由 UUID.randomUUID().toString()随机生成的~所以只剩下了signature。
同样查找signaturesc生成的方法。
继续探索signature的生成
1 | private static String computeSignature(Map<String, String> parameters, String accessKeySecret) throws Exception { |
将经过处理的字符串传到了另外一个方法 进行加密
以这样的方式可以找出涉及到的方法和主要参数1
2
3
4
5
6private static String calculateSignature(String key, String stringToSign) throws Exception {
String ALGORITHM = "HmacSHA1";
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(new SecretKeySpec(key.getBytes(CharEncoding.UTF_8), "HmacSHA1"));
return Base64.encodeToString(mac.doFinal(stringToSign.getBytes(CharEncoding.UTF_8)), false);
}
…以下省略部分加密函数和参数。
然后全部找齐了
注:这个过程中可能会涉及到一些java包里面的方法。需要自行下载添加。而不是一直找下去。因为逆向的文件会把依赖的java包
全部以代码的形式表示出来,所以每次从其他包找到需要的方法时,都要看一看是不是依赖的java包。否则会一直找下去。
现在所有方法都齐了。
然而问题来了。。签名错误。。
这是一个失败了也没找出错在哪的过程【掩面
所有的参数都可以生成来着..
跟进。。在核对签名方式小进展+1
希望可以来写后记TUT
9.25 更新!加密方式已破解!撒花撒花撒花~
突破点 base64加密用的包是import android.util.Base64;
用AS码了一遍就对了~
。。此贴终结
备注:以上只是为了个人学习所做的尝试
`