吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9578|回复: 32
收起左侧

[Android 原创] 陕西省网络空间安全技术大赛安卓破解试题分析(五)

  [复制链接]
lumou 发表于 2017-5-3 18:39
ok, 我来接棒第五题。
先上题目链接:http://pan.baidu.com/s/1slM1hCT  密码:twfq

现在开始解题:
文件是jar格式,我们用jd-gui来打开,如图:
1.png
我们可以看到,代码被混淆了。但是好在代码量不是很多,而且混淆是有一定规律的,所以我的做法是直接复制代码到notepad++,然后用替换来解决这些看上去不那么协调的东西。(如若诸位有更好的去混淆的法子,请不吝赐教。)
2.png
这样看上去比较好看一点了。然后我用的还是比较笨的法子,我在eclipse里新建了一个java项目,把这四个类都复制进去。从刚刚那个截图中我们也可以看到,它是一个java swing。所以运行的结果是这样的:
3.png
其实能运行了,解决问题也就不远了,无非就是看看程序的执行过程,让它吐出key。既然是写帖子,我就写全套吧。
我们先来看UnitTests里面的main函数:
[Java] 纯文本查看 复制代码
 public static void main(String[] args)
  {
    JFrame frame = new JFrame("Key check");
    JButton button = new JButton("Click to activate");
    
    button.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent ae)
      {
        String str = JOptionPane.showInputDialog(null, "Enter the product key: ", 
          "xxxx-xxxx-xxxx-xxxx", 1);
        if (VV.BB(str)) {
          JOptionPane.showMessageDialog(null, "Well done that was the correct key", 
            "Key check", 1);
        } else {
          JOptionPane.showMessageDialog(null, "               Sorry that was the incorrect key \nRemember it is a crime to use software without paying for it", 
            "Key check", 1);
        }
      }
    });

很清晰,主要是判断VV.BB(str)是否为true。
再来看VV.BB(String str)是做什么的
[Java] 纯文本查看 复制代码
 public static boolean BB(String ss)
  {
    if ((ss != null) && (ss.length() == 19))
    {
      s1 = System.arraycopy(s2, 0, s1, 5, 5);
      
      boolean keyGuessWrong = true;
      int i = 0;
      for (int x = 0; x < 4; x++)
      {
        for (int y = 0; y < 4; y++) {
          if (ss.charAt(i + y) != s1.charAt(Start.VV(i + y, s1))) {
            keyGuessWrong = false;
          }
        }
        i += 5;
      }
      return keyGuessWrong;
    }
    return false;
  }


里面有一个全局的s1,s2
[Java] 纯文本查看 复制代码
static String s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  static String s2 = "ZYXWVUTSRQPONMLKJIHGFEDCBA";

但是并没有用。用不上它们,因为System.arraycopy这个函数直接调用Start.main(null)
[Java] 纯文本查看 复制代码
  public static String arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
  {
    return Start.main(null);
  }

再来看Start.main(null):
[Java] 纯文本查看 复制代码
 public static String main(String... args)
  {
    String x = "";
    for (int i : "vè&#190;¤êê&#172;&#198;&#198;êvì¤ê2ê2à&#206;¤¨&#184;&#172;".toCharArray()) {
      x = x + (char)((i >> 1) + 15);
    }
    return x;
  }

这一串乱码也不知道是什么,直接把这个函数抽出来运行好了,得到下面的字符串:
4.png
也就是说,s1=“JsnatterrtJuaththovacke”
用s1=“JsnatterrtJuaththovacke”替换s1 = System.arraycopy(s2, 0, s1, 5, 5)再把VV.BB以及相关的函数抽出来,再在验证key处输出key,最后再运行就可以了。
6.png
这里要说的是,因为前面有判断说字符串长度需要19,所以在运行BB()的时候也要写长度为19的字符串,不然不能吐出key的。最后密码就是:sssntrtktceaakJr,用它给的格式写进去sssn-trtk-tcea-akJr就好了。
结果图:
7.png

点评

由衷地感谢他们的无私奉献!!!也谢谢这段时间内坛友的鼓励,如果有好的题目也希望坛友们发上来讨论和交流。  发表于 2017-5-3 22:29
陕西省网络空间安全技术大赛MOBILE 类型题目在此完结,从第一帖4月25号开始,经历了8天时间,在@Enigma_G,@lumou 两位朋友的帮助下,一共写了五个帖子。类型从静态分析到动态调试,再到代码混淆   发表于 2017-5-3 22:27

免费评分

参与人数 19威望 +2 吾爱币 +29 热心值 +19 收起 理由
Vat_ + 1 + 1 用心讨论,共获提升!
安卓逆向一切 + 1 + 1 我很赞同!
微笑丶纯属礼貌 + 2 + 1 我很赞同!
1455018613 + 1 已答复!
aipanpann + 1 + 1 热心回复!
小树丶 + 1 + 1 我很赞同!
qtfreet00 + 2 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
woshidc523 + 1 + 1 非常感谢楼主的帮助!~!~!
夏雨微凉 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qingliang87 + 1 + 1 热心回复!
Akesudia + 1 + 1 用心讨论,共获提升!
真爱贤 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
QWERTYUIOP[] + 1 + 1 用心讨论,共获提升!
chenjingyes + 1 + 1 非常感谢楼主的耐心分享!
观世正宗 + 1 + 1 谢谢@Thanks!
挥汗如雨 + 1 写的很好,6666
yangkaixin + 1 + 1 我很赞同!
梦之光芒 + 1 + 1 我很赞同!
回归自然 + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lumou 发表于 2017-5-4 10:48
wnagzihxain 发表于 2017-5-3 23:10
对于这种混淆,可以使用Jar2Dex工具转为Dex文件,然后使用JEB打开,使用JEB提供的修改变量名的功能修改为有 ...

谢谢指点。
 楼主| lumou 发表于 2017-5-4 20:45
myouter 发表于 2017-5-4 20:09
我也是拿eclipse做的。这个题eclipse就挺好的,工程小,也有重命名快捷键。

啊,没有注意到它有重命名快捷键。。谢谢~
gunxsword 发表于 2017-5-3 19:13
头像被屏蔽
wanghai123 发表于 2017-5-3 20:11
提示: 作者被禁止或删除 内容自动屏蔽
马锦慧 发表于 2017-5-3 20:19
谢谢分享,赞一个!
挥汗如雨 发表于 2017-5-3 22:10
@Enigma_G     不好意思,又拉了一个人写。。。嘿嘿,不过五帖全了
wnagzihxain 发表于 2017-5-3 23:10
对于这种混淆,可以使用Jar2Dex工具转为Dex文件,然后使用JEB打开,使用JEB提供的修改变量名的功能修改为有意义的变量名即可
海蓝浪花 发表于 2017-5-3 23:49
分析的不错
chenjingyes 发表于 2017-5-4 00:10
非常感谢楼主的耐心分享!
真爱贤 发表于 2017-5-4 08:08
感谢大佬分享!!!
qingliang87 发表于 2017-5-4 10:29
只能膜拜大神了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 16:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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