首页
社区
课程
招聘
[原创]第二题
发表于: 2015-1-25 21:05 1907

[原创]第二题

2015-1-25 21:05
1907
反编译dex返现有个关键函数securityCheck 返回为真的时候才通过检查
直接反编译so文件
可以看到有敏感函数:
Java_com_yaotong_crackme_MainActivity_securityCheck
反编译成C代码如图:
signed int __fastcall Java_com_yaotong_crackme_MainActivity_securityCheck(int a1, int a2, int a3)
{
  int v3; // r5@1
  int v4; // r4@1
  int v5; // r0@5
  char *v6; // r2@5
  int v7; // r3@6
  signed int v8; // r1@7

  v3 = a1;
  v4 = a3;
  if ( !byte_6359 )
  {
    sub_2494(&unk_6304, 8, &unk_446B, &unk_4468);
    byte_6359 = 1;
  }
  if ( !unk_635A )
  {
    sub_24F4(&unk_636C, 25, &unk_4530, &unk_4474);
    unk_635A = 1;
  }
  _android_log_print(4, &unk_6304, &unk_636C);
  v5 = (*(int (__fastcall **)(int, int, _DWORD))(*(_DWORD *)v3 + 676))(v3, v4, 0);
  v6 = off_628C;
  while ( 1 )
  {
    v7 = (unsigned __int8)*v6;
    if ( v7 != *(_BYTE *)v5 )
      break;
    ++v6;
    ++v5;
    v8 = 1;
    if ( !v7 )
      return v8;
  }
  return 0;
}

在 if ( v7 != *(_BYTE *)v5 ) 的地方下断点
可是发现程序直接退出 说明有反调试

直接对函数fgets下断点查看返回结果

返回结果里tracertid改为0 然后就绕过反调试
测试的时候发现把ID改为0后 不断的在这里循环 逃脱不出去

于是 我直接把fgets改掉了如图黄色标记部分所示:

然后重打包 后 调试器可以附加进程了,直接在关键函数地方下断
可以看到明文密码 如图黄色标记部分

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//