X书hmac参数

雨点打透心脏的1/2处 2023-10-12 17:28 121阅读 0赞

被删重新发送

全文可以查看:
上面一遍unidbg解密shield文章

unidbg - 》 callObjectMethodV方法填写你的小红书路径下s.xml里的值:

在这里插入图片描述
或者在抓包响应头中: 查找xy-ter-str
在这里插入图片描述

在这里插入图片描述
hmac 结果都是在,响应头里,所以 hmac 是服务器下发给客户端的.

  1. @Override
  2. public DvmObject<?> callObjectMethodV(BaseVM vm, DvmObject<?> dvmObject, String signature, VaList vaList) {
  3. switch (signature) {
  4. case "android/content/Context->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;":
  5. return vm.resolveClass("android/content/SharedPreferences").newObject(vaList.getObjectArg(0));
  6. case "android/content/SharedPreferences->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;": {
  7. if(((StringObject) dvmObject.getValue()).getValue().equals("s")){
  8. System.out.println("getString :"+vaList.getObjectArg(0).getValue());
  9. if (vaList.getObjectArg(0).getValue().equals("main")) {
  10. return new StringObject(vm, "");
  11. }
  12. if(vaList.getObjectArg(0).getValue().equals("main_hmac")){
  13. return new StringObject(vm, "a9+xPqTwWr7ua8QlDuTyLjvNTAszAxbIhBWeugeCNpcorLQJTUiH6JbLFDrW1cypknldr7izHSeoGQ1HzB6VAVu7iMG6FU1+bEt7/e+9cx6LmeDCOKSapcI9elpXr9ba");
  14. }
  15. }
  16. }
  17. case "okhttp3/Interceptor$Chain->request()Lokhttp3/Request;": {
  18. DvmClass clazz = vm.resolveClass("okhttp3/Request");
  19. return clazz.newObject(request);
  20. }
  21. case "okhttp3/Request->url()Lokhttp3/HttpUrl;": {
  22. DvmClass clazz = vm.resolveClass("okhttp3/HttpUrl");
  23. Request request = (Request) dvmObject.getValue();
  24. return clazz.newObject(request.url());
  25. }
  26. case "okhttp3/HttpUrl->encodedPath()Ljava/lang/String;": {
  27. HttpUrl httpUrl = (HttpUrl) dvmObject.getValue();
  28. return new StringObject(vm, httpUrl.encodedPath());
  29. }
  30. case "okhttp3/HttpUrl->encodedQuery()Ljava/lang/String;": {
  31. HttpUrl httpUrl = (HttpUrl) dvmObject.getValue();
  32. return new StringObject(vm, httpUrl.encodedQuery());
  33. }
  34. case "okhttp3/Request->body()Lokhttp3/RequestBody;": {
  35. Request request = (Request) dvmObject.getValue();
  36. return vm.resolveClass("okhttp3/RequestBody").newObject(request.body());
  37. }
  38. case "okhttp3/Request->headers()Lokhttp3/Headers;": {
  39. Request request = (Request) dvmObject.getValue();
  40. return vm.resolveClass("okhttp3/Headers").newObject(request.headers());
  41. }
  42. case "okio/Buffer->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lokio/Buffer;": {
  43. System.out.println("write to my buffer:"+vaList.getObjectArg(0).getValue());
  44. Buffer buffer = (Buffer) dvmObject.getValue();
  45. buffer.writeString(vaList.getObjectArg(0).getValue().toString(), (Charset) vaList.getObjectArg(1).getValue());
  46. return dvmObject;
  47. }
  48. case "okhttp3/Headers->name(I)Ljava/lang/String;": {
  49. Headers headers = (Headers) dvmObject.getValue();
  50. return new StringObject(vm, headers.name(vaList.getIntArg(0)));
  51. }
  52. case "okhttp3/Headers->value(I)Ljava/lang/String;": {
  53. Headers headers = (Headers) dvmObject.getValue();
  54. return new StringObject(vm, headers.value(vaList.getIntArg(0)));
  55. }
  56. case "okio/Buffer->clone()Lokio/Buffer;": {
  57. Buffer buffer = (Buffer) dvmObject.getValue();
  58. return vm.resolveClass("okio/Buffer").newObject(buffer.clone());
  59. }
  60. case "okhttp3/Request->newBuilder()Lokhttp3/Request$Builder;": {
  61. Request request = (Request) dvmObject.getValue();
  62. return vm.resolveClass("okhttp3/Request$Builder").newObject(request.newBuilder());
  63. }
  64. case "okhttp3/Request$Builder->header(Ljava/lang/String;Ljava/lang/String;)Lokhttp3/Request$Builder;": {
  65. Request.Builder builder = (Request.Builder) dvmObject.getValue();
  66. builder.header(vaList.getObjectArg(0).getValue().toString(), vaList.getObjectArg(1).getValue().toString());
  67. return dvmObject;
  68. }
  69. case "okhttp3/Request$Builder->build()Lokhttp3/Request;": {
  70. Request.Builder builder = (Request.Builder) dvmObject.getValue();
  71. return vm.resolveClass("okhttp3/Request").newObject(builder.build());
  72. }
  73. case "okhttp3/Interceptor$Chain->proceed(Lokhttp3/Request;)Lokhttp3/Response;": {
  74. return vm.resolveClass("okhttp3/Response").newObject(null);
  75. }
  76. }
  77. return super.callObjectMethodV(vm, dvmObject, signature, vaList);
  78. }

发表评论

表情:
评论列表 (有 0 条评论,121人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Xhook响应结果入库

    思路 :通过hook okhttp3框架进行将 响应hook走的方式。 > 目前某书app就使用okhttp3该框架,若想拦截请求及hook响应及参数,需要对该框架大致了

    相关 MD5 SHA1 HMAC HMAC_SHA1区别

    什么是MD5,什么是SHA-1,让我们先来了解一些基本知识,了解hash。  Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映