zoukankan      html  css  js  c++  java
  • 【移动安全实战篇】————2、破解AD Blocker Trial注册算法

    【文章标题】: 【原创】AD Blocker Trial 注册算法
    【下载地址】: http://as.baidu.com/a/item?docid=150568&pre=web_am_se
    【操作平台】: Ubuntu11.10
    【使用工具】: Apktool v1.4.3 , dex2jar-0.0.9.9,  jd-gui-0.3.3
    【作者邮箱】:  iltgcl@163.com
    【作者声明】: 仅作为研究交流使用。
    【软件名称】: 英文名: AD Blocker Trial  中文名:广告拦截器及净触发器的审判。
    【破解过程】
    先安装程序,启动以后,点击弹出菜单Buy 选项,进入到注册界面。发现程序已经给出了我的Product Code:44173112,  输入试练码:12345678,程序弹出对话框表示出错了。

    好了,基本信息搜集完了。使用dex2jar反编译,然后用jd-gui打开,太好了,代码尽然没有混淆,省了不少麻烦。虽然这个程序的算法非常简单,但我还是尽量详细的将分析过程写下来。
    首先需要找到注册界面。从前面信息搜集过程中知道是在弹出菜单中点击Buy选项出现的注册界面,找到如下代码片段

    由于反编译不太可能与原码一样,所以上面这段代码流程比较乱。通常这种情况需要通过smali文件来仔细分析,
    不过这里你可以试着猜猜看,我反正一眼就看到了showDonateDialog() 。

    我们知道,点击OK会进行注册判断,继续进入ADBlocker.3看看

    哦,点击后会调用ADBlocker.access$3(...),我输入的试炼码会作为参数。比较讨厌的是access$3是什么意思呢?
    当在JAVA内部类中调用外部类的私有方法时,编译器会自动合成一个静态函数。好了,使用Apktool工具反编译吧,然后打开

    仅仅调用了reg函数而已。

    看到这里,聪明的你一定知道RegUtil.check就是关键比较点了!只要返回true就可以了。

    看后面那个check函数
    paramString1 :Product Code(模拟器上就是44173112)
    paramString2:试炼码
    显然只要genKey函数返回值等于试炼码就可以了,注意genKey函数的参数就是ProductCode,那么来看看该函数吧

    我靠,这么简单!用白话来说就是将ProductCode分成两个部分:l2 = 前4位,l3 = 后4位
    试炼码应该等于(l2 + l3) * (l2 * l3)
    那么对于44173112来说,注册码=((4417+3112)*(4417*3112)) = 103491405416

    转自:https://bbs.pediy.com/thread-154770.htm

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    0 到 1 掌握:Vue 核心之数据双向绑定
    前端性能优化, 从哪些方面入手? (缩略版)
    MDN中定义的Function.prototype.call()和apply()与bind()
    应聘前端开发的一次笔试题目(某数据挖掘分析公司)
    应聘前端开发的一次笔试题目(某电信子公司)
    应聘前端开发的一次笔试题目(某外资公司)
    算法之杨辉三角形(Java语言)
    算法之求质数(Java语言)
    微信小程序背景
    备份恢复(一)
  • 原文地址:https://www.cnblogs.com/devi1/p/13486469.html
Copyright © 2011-2022 走看看