吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 5050|回复: 100

[安卓逆向图文] 霸哥磁力搜索签名校验分析

  [复制链接]
白云点缀的蓝 发表于 2021-6-26 14:48 | 显示全部楼层 |阅读模式

本帖最后由 白云点缀的蓝 于 2021-11-4 16:13 编辑

我们先拖入AndroidKiller反编译,然后重新编译一下,


霸哥.png




安装进模拟器后可以看到,会直接闪退
霸哥1.png


我们动态调试走起
打开jeb,让他反编译,然后在cmd中输入如下命令
动态调试.png






然后进行附加
进程.png

贴个mainActivity的OnCreate方法代码


[Java] 纯文本查看 复制代码
 @Override
    public void onCreate(Bundle arg4) {
        ADRTLogCatReader.onContext(this, "com.aide.ui");
        super.onCreate(arg4);
        this.setContentView(0x7F030001);  // layout:main
        this.qian(0xD845713);
        this.输入 = (EditText)this.findViewById(0x7F060003);  // id:输入
        this.搜索 = (Button)this.findViewById(0x7F060004);  // id:搜索
        this.列表 = (ListView)this.findViewById(0x7F060005);  // id:列表
        this.搜索.setOnClickListener(new 100000001(this));
        this.eee = this.bug();
        if(this.eee.equals("")) {
            Toast.makeText(this, 1, 1).show();
        }
    }



然后我们在mainActivity的oncreate方法内下断
动态调试1.png
当我们走到qian方法的时候就退出了


动态调试3.png


我们跟踪一下qian方法


[Java] 纯文本查看 复制代码
public void qian(int arg4) {
        try {
            if(this.getPackageManager().getPackageInfo(this.getPackageName(), 0x40).signatures[0].hashCode() != arg4) {
                Toast.makeText(this, 1, 1).show();
                return;
            }
        }
        catch(PackageManager.NameNotFoundException v0) {
            return;
        }
    }



动态调试4.png


可以看到如下代码有个签名校验,如果arg4不等于原先签名,就执行下面的toast错误代码,然后直接闪退


动态调试5.png
[Java] 纯文本查看 复制代码
if(this.getPackageManager().getPackageInfo(this.getPackageName(), 0x40).signatures[0].hashCode() != arg4) {
                Toast.makeText(this, 1, 1).show();
                return;
            }



下面我们去AndroidKiller修改,把toast的错误代码删除,或者在最前面直接retn




动态调试6.png
[C] 纯文本查看 复制代码

删除如下smali代码即可


[Java] 纯文本查看 复制代码
const/4 v0, 0x1

    const/4 v1, 0x1

    invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;

    move-result-object v0

    invoke-virtual {v0}, Landroid/widget/Toast;->show()V



然后我们再次编译,然后安装
动态调试7.png


可以看到页面已经出来了,不闪退了,但是页面显示不完整
正常是这样的
正常.png


我们回到oncreate方法
动态调试8.png


可以看到有个bug,我们看看这个bug方法,
霸哥3.png




霸哥2.png


可以看到这个bug方法的实现在native层,下面我们用ida反编译一下so
[Java] 纯文本查看 复制代码
 public native String bug() {
    }



动态调试9.png


反编译完成后,我们看一下bug这个函数,


霸哥4.png


可以看到,他调用了getSignHashCode()函数,我们跟进去看看
霸哥5.png


[C] 纯文本查看 复制代码
  int v4; // r7
  int v5; // r0
  int v6; // r0
  int v7; // r0
  int v8; // r6
  int v9; // r6
  int v10; // r0
  int v11; // r0
  int v12; // r0
  int v13; // r6
  int v14; // r0
  int v15; // r0
  int result; // r0
  int v17; // [sp+8h] [bp-20h]
  int v18; // [sp+Ch] [bp-1Ch]

  v4 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 124))(a1);
  v5 = (*(int (__fastcall **)(int, int, const char *, const char *))(*(_DWORD *)a1 + 132))(
         a1,
         v4,
         "getPackageManager",
         "()Landroid/content/pm/PackageManager;");
  v17 = (*(int (__fastcall **)(int, int, int))(*(_DWORD *)a1 + 136))(a1, a2, v5);
  v6 = (*(int (__fastcall **)(int, int))(*(_DWORD *)a1 + 124))(a1, v17);
  v18 = (*(int (__fastcall **)(int, int, const char *, const char *))(*(_DWORD *)a1 + 132))(
          a1,
          v6,
          "getPackageInfo",
          "(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;");
  v7 = (*(int (__fastcall **)(int, int, const char *, const char *))(*(_DWORD *)a1 + 132))(
         a1,
         v4,
         "getPackageName",
         "()Ljava/lang/String;");
  v8 = (*(int (__fastcall **)(int, int, int))(*(_DWORD *)a1 + 136))(a1, a2, v7);
  (*(void (__fastcall **)(int, int, _DWORD))(*(_DWORD *)a1 + 676))(a1, v8, 0);
  v9 = (*(int (__fastcall **)(int, int, int, int, int))(*(_DWORD *)a1 + 136))(a1, v17, v18, v8, 64);
  v10 = (*(int (__fastcall **)(int, int))(*(_DWORD *)a1 + 124))(a1, v9);
  v11 = (*(int (__fastcall **)(int, int, const char *, const char *))(*(_DWORD *)a1 + 376))(
          a1,
          v10,
          "signatures",
          "[Landroid/content/pm/Signature;");
  v12 = (*(int (__fastcall **)(int, int, int))(*(_DWORD *)a1 + 380))(a1, v9, v11);
  v13 = (*(int (__fastcall **)(int, int, _DWORD))(*(_DWORD *)a1 + 692))(a1, v12, 0);
  v14 = (*(int (__fastcall **)(int, int))(*(_DWORD *)a1 + 124))(a1, v13);
  v15 = (*(int (__fastcall **)(int, int, const char *, const char *))(*(_DWORD *)a1 + 132))(a1, v14, "hashCode", "()I");
  result = (*(int (__fastcall **)(int, int, int))(*(_DWORD *)a1 + 196))(a1, v13, v15);
  if ( result != 226776851 )
    result = 0;
  return result;



可以看到如果result不等于指定的整数就直接执行exit函数,
我们可以先转成汇编,然后把exit这个函数nop了,
霸哥6.png


霸哥9.png


霸哥10.png


在arm汇编中,nop指令的十六进制码是 00 BF

改完后,我们需要应用补丁,也就是保存补丁
霸哥11.png


保存后,我们用AndroidKiller重新编译,签名后,安装进模拟器,
霸哥12.png


可以看到,签名校验已经过了



评分

参与人数 22威望 +1 HB +42 THX +7 收起 理由
lies + 1
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
459121520 + 1
后学真 + 1
冷亦飞 + 1
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
Wayne + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
挖藕 + 1
temp + 1 + 1
阿谦 + 1
MoeRay + 1
逝去流星 + 1
上帝的恩赐 + 2 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
清风而已 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
bnjzzheng + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
ghostxu + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
成丰羽 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
allenzjb + 1
消逝的过去 + 2 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
liugu0hai + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
king51999 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
Shark恒 + 1 + 20 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 白云点缀的蓝 发表于 2021-11-4 10:19 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 白云点缀的蓝 发表于 2021-6-26 15:14 | 显示全部楼层

@Shark恒 忘设置回复可见了,帮忙设置一下,谢谢,我重新编辑他不显示图片,好多东西都没显示出来,一直刷新都不显示出来

点评

Shark恒”点评说:
OK了  详情 回复 发表于 2021-6-26 17:05
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2021-6-26 17:05 | 显示全部楼层

starry、星空 发表于 2021-6-26 15:14
@Shark恒 忘设置回复可见了,帮忙设置一下,谢谢,我重新编辑他不显示图片,好多东西都没显示出来,一直刷新都不 ...

OK了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
lies 发表于 2021-6-26 17:18 | 显示全部楼层

谢谢教程,学习!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
陈冠希 发表于 2021-6-26 17:22 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
列明 发表于 2021-6-27 00:08 | 显示全部楼层

不回復就看不到。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
330383477 发表于 2021-7-4 08:04 | 显示全部楼层

作者能出个教学视频那就更好了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
minminvip 发表于 2021-7-10 00:48 | 显示全部楼层

重新编辑他不显示图片,好多东西都没显示出来
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zuomuyao 发表于 2021-9-8 17:43 | 显示全部楼层

不回复就看不到
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
xiao00kang 发表于 2021-10-13 21:45 | 显示全部楼层

12345678990
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层 10层
13层  
2层  
3层  
4层  
5层  
6层  
7层  
8层  
9层  

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表