首页
社区
课程
招聘
[原创]微信系列研究之---搞定小保姆,拿到程序日志
发表于: 2015-5-6 11:25 47986

[原创]微信系列研究之---搞定小保姆,拿到程序日志

2015-5-6 11:25
47986
收藏
免费 3
支持
分享
打赏 + 20.01雪花
打赏次数 2 雪花 + 20.01
 
赞赏  secsip   +20.00 2017/06/30
赞赏  一位没有留下痕迹的看雪读者   +0.01 2017/05/04
最新回复 (72)
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
51
继续支持~~~
2015-7-14 22:43
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
强大的好文。
不管是微信还是360,在它们的监控下,休想有隐私。
2015-7-15 16:56
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
53
感谢楼主分享,坐等更新
2015-7-16 10:44
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
54
“跳到0x17fe0位置”,请问是用ida逆向分析得到的吗?
2015-7-23 18:32
0
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
55
用IDA
2015-7-23 22:20
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
也是求第二步骤怎么发现的。。
2015-7-23 22:44
0
雪    币: 1305
活跃值: (252)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
57
除了好好逆向代码,分析逻辑,没有更好的办法。
2015-7-24 07:48
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
  麻烦你帮我看下,我改的对不对,我用ida分析的微信6.2.2最新版本的,我把libwechatxlog.so修改了。在0x57fe处。
上传的附件:
2015-7-24 15:28
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
59
请问我修改前后,log输出的都是差不多的东西。是不是还是哪里不对呀?新手,请指教
上传的附件:
2015-7-24 17:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
继续支持/
2015-7-24 17:47
0
雪    币: 23
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
自己动态调了下,在函数xlogger_appender下然后跟追一下,打印日志主要用的是ConsoleLog这个函数前面有个判读,将这个判断改一下就行了,设置过滤条件好像不能设置com.tencent.mm,我设置的pid,不知道为什么,tag是加了密的字符串
2015-8-11 16:46
0
雪    币: 23
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
62
int __fastcall xlogger_appender(const void *a1, const char *a2)
{
  const void *v2; // r4@1
  const char *v3; // r7@1
  void *v4; // r0@4
  int v5; // r5@12
  int v6; // r4@13
  int v7; // r0@13
  void *v8; // r5@15
  int v9; // r0@15
  int v10; // r0@16
  int v11; // r5@20
  int v12; // r6@20
  int v13; // r0@23
  pthread_key_t *v15; // [sp+4h] [bp-64h]@4
  char v16; // [sp+8h] [bp-60h]@12
  int dest; // [sp+18h] [bp-50h]@12
  char v18; // [sp+1Ch] [bp-4Ch]@15

  v2 = a1;
  v3 = a2;
  if ( !(dword_3153C & 1) && _cxa_guard_acquire() )
  {
    pthread_key_create((pthread_key_t *)&dword_31530, 0);
    _cxa_guard_release(&dword_3153C);
    _aeabi_atexit(&dword_31530, Tss::~Tss, &unk_31000);
  }
  v15 = (pthread_key_t *)&dword_31530;
  v4 = pthread_getspecific(dword_31530);
  pthread_setspecific(dword_31530, (char *)v4 + 1);
  if ( !(dword_31518 & 1) && _cxa_guard_acquire() )
  {
    pthread_key_create((pthread_key_t *)&dword_314F8, (void (*)(void *))&free);
    _cxa_guard_release(&dword_31518);
    _aeabi_atexit(&dword_314F8, Tss::~Tss, &unk_31000);
  }
  if ( !byte_31004 )
  {
    if ( byte_3157D != 1 )
      ConsoleLog((int)v2, (int)v3);
    if ( (signed int)pthread_getspecific(*v15) <= 1 || pthread_getspecific(dword_314F8) )
    {
      if ( pthread_getspecific(dword_314F8) )
      {
        v8 = pthread_getspecific(dword_314F8);
        pthread_setspecific(dword_314F8, 0);
        dest = (int)&unk_31534;
        v18 = 0;
        v9 = sub_B148();
        if ( sub_17AC0(v9) )
        {
          v10 = strnlen(v8, 4096);
          LogCrypt(v8, v10, dword_31588);
        }
        sub_AEDC(&dest);
        free(v8);
        BaseScopedLock<Mutex>::~BaseScopedLock(&dest);
      }
      if ( dword_314F4 == 1 )
      {
        sub_17E38(v2, v3);
      }
      else
      {
        dest = (int)&unk_31580;
        v18 = 0;
        sub_B148();
        v11 = sub_1C53E(&unk_31560);
        log_formater(v2, v3, &unk_31560);
        v12 = sub_1C53E(&unk_31560);
        if ( byte_31005 && v2 && *(_DWORD *)v2 > 3 )
        {
          v13 = sub_1C530(&unk_31560);
          sub_178E4(v13 + v11, v12 - v11);
        }
        if ( (unsigned int)sub_1C53E(&unk_31560) > 0x4AFFF || v2 && *(_DWORD *)v2 == 5 )
          sub_17090(&unk_31520, 0);
        BaseScopedLock<Mutex>::~BaseScopedLock(&dest);
      }
    }
    else
    {
      v5 = (int)calloc(0x1000u, 1u);
      pthread_setspecific(dword_314F8, (const void *)v5);
      memcpy(&dest, v2, 0x38u);
      dest = 5;
      sub_1C370(&v16, v5, 0, 4096);
      log_formater(&dest, "ERROR!!! xlogger_appender Recursive calls!!!", &v16);
      strncat((char *)v5, v3, 0x1000u);
      *(_BYTE *)(v5 + 4095) = 0;
      if ( byte_31005 )
      {
        v6 = sub_1C530(&v16);
        v7 = sub_1C53E(&v16);
        sub_178E4(v6, v7);
      }
      ConsoleLog((int)&dest, v5);
      nullsub_2(&v16);
    }
  }
  return ScopeRecursionLimit::~ScopeRecursionLimit((ScopeRecursionLimit *)&v15);
}
将这个判断
  if ( byte_3157D != 1 )
      ConsoleLog((int)v2, (int)v3);
改掉就可以了
2015-8-11 16:55
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
63
太复杂了,需要慢慢消化才行。
2016-8-1 08:53
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
64
必须顶一个
2016-8-1 09:46
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
继续支持
2016-8-1 15:56
0
雪    币: 5511
活跃值: (2072)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
66
不明觉厉,感谢分享!
2016-8-1 16:07
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
67
楼主可否提供so,  或者具体分析过程?  还想问下目前so有没有工具可以转成c代码的?
2017-2-23 08:00
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
68

根据楼主的帖子, 拿下载的531版本的so库学习了下, 531版本有函数ConsoleLog, 新版本的apk好像没有这个函数了.

楼主的0x17fe0位置的0028, 而对应我这个apk估计是00017E06 (没有实际动态调试验证, 新手还没去学调试so~)


.text:00017DA0 ; =============== S U B R O U T I N E =======================================

.text:00017DA0

.text:00017DA0

.text:00017DA0 ; xlogger_appender(XLoggerInfo_t const*, char const*)

.text:00017DA0                 EXPORT _Z16xlogger_appenderPK13XLoggerInfo_tPKc

.text:00017DA0 _Z16xlogger_appenderPK13XLoggerInfo_tPKc

.text:00017DA0                                         ; CODE XREF: appender_close(void)+12p

.text:00017DA0                                         ; appender_close(void)+1Cp ...

.text:00017DA0

.text:00017DA0 var_64          = -0x64

.text:00017DA0 var_60          = -0x60

.text:00017DA0 dest            = -0x50

.text:00017DA0 var_10          = -0x10

.text:00017DA0 var_C           = -0xC

.text:00017DA0 arg_4           =  4

.text:00017DA0

.text:00017DA0                 PUSH    {R4-R7,LR}

.text:00017DA2                 MOVS    R4, R0

.text:00017DA4                 LDR     R0, =(dword_3053C - 0x17DAE)

.text:00017DA6                 LDR     R6, =(_GLOBAL_OFFSET_TABLE_ - 0x17DB2)

.text:00017DA8                 MOVS    R3, #1

.text:00017DAA                 ADD     R0, PC ; dword_3053C

.text:00017DAC                 LDR     R5, [R0]

.text:00017DAE                 ADD     R6, PC ; _GLOBAL_OFFSET_TABLE_

.text:00017DB0                 SUB     SP, SP, #0x54

.text:00017DB2                 MOVS    R7, R1

.text:00017DB4                 ANDS    R5, R3

.text:00017DB6                 BNE     loc_17DE2

.text:00017DB8                 BLX     __cxa_guard_acquire

.text:00017DBC                 CMP     R0, #0

.text:00017DBE                 BEQ     loc_17DE2

.text:00017DC0                 LDR     R0, =(dword_30530 - 0x17DC8)

.text:00017DC2                 MOVS    R1, R5          ; destr_function

.text:00017DC4                 ADD     R0, PC ; dword_30530 ; key

.text:00017DC6                 BLX     pthread_key_create

.text:00017DCA                 LDR     R0, =(dword_3053C - 0x17DD0)

.text:00017DCC                 ADD     R0, PC ; dword_3053C

.text:00017DCE                 BLX     __cxa_guard_release

.text:00017DD2                 LDR     R3, =(_ZN3TssD2Ev_ptr - 0x2FDB4)

.text:00017DD4                 LDR     R0, =(dword_30530 - 0x17DDE)

.text:00017DD6                 LDR     R1, [R6,R3] ; Tss::~Tss()

.text:00017DD8                 LDR     R3, =(off_2FCC8 - 0x2FDB4)

.text:00017DDA                 ADD     R0, PC ; dword_30530

.text:00017DDC                 LDR     R2, [R6,R3] ; unk_30000

.text:00017DDE                 BLX     __aeabi_atexit

.text:00017DE2

.text:00017DE2 loc_17DE2                               ; CODE XREF: xlogger_appender(XLoggerInfo_t const*,char const*)+16j

.text:00017DE2                                         ; xlogger_appender(XLoggerInfo_t const*,char const*)+1Ej

.text:00017DE2                 LDR     R5, =(dword_30530 - 0x17DE8)

.text:00017DE4                 ADD     R5, PC ; dword_30530

.text:00017DE6                 LDR     R0, [R5]        ; key

.text:00017DE8                 STR     R5, [SP,#0x68+var_64]

.text:00017DEA                 BLX     pthread_getspecific

.text:00017DEE                 LDR     R3, [R5]

.text:00017DF0                 ADDS    R1, R0, #1      ; pointer

.text:00017DF2                 MOVS    R0, R3          ; key

.text:00017DF4                 BLX     pthread_setspecific

.text:00017DF8                 LDR     R0, =(dword_30514 - 0x17DFE)

.text:00017DFA                 ADD     R0, PC ; dword_30514

.text:00017DFC                 LDR     R3, [R0]

.text:00017DFE                 LSLS    R2, R3, #0x1F

.text:00017E00                 BMI     loc_17E2E

.text:00017E02                 BLX     __cxa_guard_acquire

.text:00017E06                 CMP     R0, #0

.text:00017E08                 BEQ     loc_17E2E

.text:00017E0A                 LDR     R0, =(dword_304F8 - 0x17E12)

.text:00017E0C                 LDR     R3, =(free_ptr - 0x2FDB4)

.text:00017E0E                 ADD     R0, PC ; dword_304F8 ; key

.text:00017E10                 LDR     R1, [R6,R3] ; __imp_free ; destr_function

.text:00017E12                 BLX     pthread_key_create

.text:00017E16                 LDR     R0, =(dword_30514 - 0x17E1C)

.text:00017E18                 ADD     R0, PC ; dword_30514

.text:00017E1A                 BLX     __cxa_guard_release

.text:00017E1E                 LDR     R3, =(_ZN3TssD2Ev_ptr - 0x2FDB4)

.text:00017E20                 LDR     R0, =(dword_304F8 - 0x17E2A)

.text:00017E22                 LDR     R1, [R6,R3] ; Tss::~Tss()

.text:00017E24                 LDR     R3, =(off_2FCC8 - 0x2FDB4)

.text:00017E26                 ADD     R0, PC ; dword_304F8

.text:00017E28                 LDR     R2, [R6,R3] ; unk_30000

.text:00017E2A                 BLX     __aeabi_atexit

.text:00017E2E

.text:00017E2E loc_17E2E                               ; CODE XREF: xlogger_appender(XLoggerInfo_t const*,char const*)+60j

.text:00017E2E                                         ; xlogger_appender(XLoggerInfo_t const*,char const*)+68j

.text:00017E2E                 LDR     R3, =(byte_30004 - 0x17E34)

.text:00017E30                 ADD     R3, PC ; byte_30004

.text:00017E32                 LDRB    R3, [R3]

.text:00017E34                 CMP     R3, #0

.text:00017E36                 BEQ     loc_17E3A

.text:00017E38                 B       loc_17FE0

.text:00017E3A ; ---------------------------------------------------------------------------

.text:00017E3A

.text:00017E3A loc_17E3A                               ; CODE XREF: xlogger_appender(XLoggerInfo_t const*,char const*)+96j

.text:00017E3A                 LDR     R3, =(byte_3057D - 0x17E40)

.text:00017E3C                 ADD     R3, PC ; byte_3057C

.text:00017E3E                 LDRB    R3, [R3]

.text:00017E40                 CMP     R3, #0

.text:00017E42                 BEQ     loc_17E4C

.text:00017E44                 MOVS    R0, R4

.text:00017E46                 MOVS    R1, R7

.text:00017E48                 BL      _Z10ConsoleLogPK13XLoggerInfo_tPKc ; ConsoleLog(XLoggerInfo_t const*,char const*)

.text:00017E4C

.text:00017E4C loc_17E4C                               ; CODE XREF: xlogger_appender(XLoggerInfo_t const*,char const*)+A2j

.text:00017E4C                 LDR     R3, [SP,#0x68+var_64]

.text:00017E4E                 LDR     R0, [R3]        ; key

.text:00017E50                 BLX     pthread_getspecific

.text:00017E54                 CMP     R0, #1

.text:00017E56                 BGT     loc_17E5A

.text:00017E58                 B       loc_18018

.text:00017E5A ; ---------------------------------------------------------------------------


2017-2-23 11:30
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
求楼主共享分析的方法!
2017-5-4 14:02
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
70
楼主你这么屌我怎么也得打赏一下,谢谢你的分享!
2017-6-30 16:38
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
71
zeorleo 楼主可否提供so, 或者具体分析过程? 还想问下目前so有没有工具可以转成c代码的?
IDA的Hex-Rays插件可以转
2017-6-30 17:09
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
72
6666666
2017-7-1 10:02
0
雪    币: 237
活跃值: (83)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
73
很想知道已加密的日志文件怎么破解,求大牛指导~
2017-7-4 17:18
0
游客
登录 | 注册 方可回帖
返回
//