x奥周易系列软件逆向思路

26April

3:57 PM

177 次浏览

0 条评论

本帖最后由 YMXuan 于 2020-6-3 15:48 编辑

更新记录

2020-06-03更新了:南X周易系列逆向思路-就改一行代码
改完我自己都惊呆了,,竟然这么简单


发帖之后,很多人说看不懂,然后就录制了一个视频发出来,先看帖子,不会操作再看视频,因为看视频就是抄作业了,比较机械,没有自己想的过程。
能有此视频多亏潇洒浪子 ,家里添丁起名可以找他啊。
视频地址:https://send.firefox.com/download/578bb6558c744b3d/#mGTV5EqSfMLirVL081jb5g
用的是firefox send服务,链接有效期7天,过期不补。
Firefox send翻车了,半天链接就挂了

链接:https://pan.baidu.com/s/1w0Kum15-incqBlKKhLj5cw
提取码:u8zo
复制这段内容后打开百度网盘手机App,操作更方便哦

软件介绍

 x奥软件工作室致力于开发易学应用软件 ,为广大命理研究者、爱好者提供辅助工具。现已开发出八字、紫微、六爻、奇门、天星等一系列软件,此系列软件不但具有专业排盘功能,还有一定的自动分析功能。

软件列表

  1. x奥八字7.3安卓版  

  2. x奥大六壬1.3安卓版 

  3. x奥八字合婚2.0安卓版

  4. x奥河洛理数2.0安卓版

  5. x奥金口诀1.5安卓版 

  6. x奥六爻3.7安卓版  

  7. x奥面相手相1.0安卓版

  8. x奥民俗预测2.3安卓版

  9. x奥姓名专家3.2安卓版

  10. x奥奇门遁甲2.6安卓版

  11. x奥三世相法1.0安卓版

  12. x奥太乙神数1.0安卓版

  13. x奥七政星命3.3安卓版

  14. x奥天文占星3.6安卓版

  15. x奥周易选号3.2安卓版

  16. x奥择吉黄历3.8安卓版

  17. x奥阳宅风水3.1安卓版

  18. x奥玄空择日2.1安卓版

  19. x奥紫微推命3.7安卓版

    支持系统

Android 6.0、7.0、7.1、8.0、8.1、9.0、10.0或更高的简体中文版,屏幕分辨率推荐(1080x1920)或更高的。

逆向工具

MT管理器

逆向过程

使用MT管理器查看原版apk文件

使用MT管理器内的Dex编辑器++打开classes.dex文件

搜索关键词“注册”

在搜索结果中看到一条const-string v0,"已注册”,二话不说点进去

点击菜单转成Java代码(可读性要高一些)

然后看到

 复制代码 隐藏代码
                this.m_bFlag = getIntent().getBooleanExtra("reg", false);                         .....                 .....         if (this.m_bFlag) {             this.EdtSer.setText("已注册");             this.EdtReg.setText("已注册");         } else {             this.EdtSer.setText(main.m_chkSoft.Fsoftsn);             this.EdtReg.setText("");         }

再顺着往下看

 复制代码 隐藏代码
        String trim = this.EdtReg.getText().toString().trim();         if (trim.length() == 15) {             for (int i = 0; i < 15; i++) {                 if (trim.charAt(i) < '0' || trim.charAt(i) > '9') {                     Toast.makeText(this, "请输入数字。", 1).show();                     return;                 }             }             main.m_chkSoft.Fregcode = trim;             if (main.m_chkSoft.ChkNumA() && main.m_chkSoft.ChkNumB() && main.m_chkSoft.ChkNumC()) {                 main.m_chkSoft.WriteRegCode(trim);                 this.m_bFlag = true;             }             Intent intent = getIntent();             intent.putExtra("reg", this.m_bFlag);             setResult(104, intent);             finish();             return

其中

 复制代码 隐藏代码
main.m_chkSoft.ChkNumA() && main.m_chkSoft.ChkNumB() && main.m_chkSoft.ChkNumC()

这句是重点,就是当ChkNumA()、ChkNumB()、ChkNumC()三个函数的值均为真的时候,才会返回“已注册”

然后我们就去找这三个ChkNum就行了。

by、小夜大佬的MT管理器2修改破解玄奥八字7.2过程启发,我们知道这三个判断都在CSoftReg这个类中

我们浏览这个类,在里面搜索ChkNum,然后会看到如下代码:

 复制代码 隐藏代码
# virtual methods.method public ChkNumA()Z     .......     return v2     :cond_86    add-int/lit8 v3, v3, 0x1    goto :goto_76    :cond_89    return v1     :cond_8a    :goto_8a    return v2 .end method .method public ChkNumB()Z         ......     return v3     :cond_8a    add-int/lit8 v0, v0, 0x1    goto :goto_77    :cond_8d    return v2     :cond_8e    :goto_8e    return v3 .end method .method public ChkNumC()Z         ......     return v3     :cond_a0    add-int/lit8 v2, v2, 0x1    goto :goto_8f    :cond_a3    return v11     :cond_a4    :goto_a4    return v3 .end method

非关键代码我做了省略。可以看到,每个函数后面都跟了3个返回值,就是return v某数字这些。因此只要让返回的值都为真,就能欺骗软件达到注册的目的,因此,我们在每条返回语句的前面,为v开头的变量重新赋值,让其结果为真,这样,无论前面的代码如何判断、检验,最后要返回时始终返回我们重设的“真”值。

赋值语句也很简单

 复制代码 隐藏代码
const/4 v某,0x1

这篇文章是这么解释的:

整数赋值

  1. const/4 vx,lit4 : 将 4 位的常量赋值给 vx。也就是说 vx 的最大值是 15。

  2. const/16 vx,lit16:将 16 位的常量赋值给 vx

    • const-wide/16 vx, lit16 表示将一个 16 位的常量存储到 vx 与 vx+1 两个寄存器中 —— 即一个 long 类型的数据。

  3. const vx, lit32:将 32 位的常量赋值给 vx

    • const-wide/32 vx, lit32 表示将一个 32 位的常量存储到 vx 与 vx+1 两个寄存器中 —— 即一个 long 类型的数据。

  4. const-wide vx, lit64 : 将一个 64 位的数据存储到 vx 与 vx+1 两个寄存器中

  5. / 后的数值表示数值本身是多少位,由 const 与 const-wide 区分变量占多少位。

作者:一江碎月
链接:https://www.jianshu.com/p/bc8df1230c3f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后就是将每个返回变量前面加上这句赋值语句,类似于这样:

 复制代码 隐藏代码
const/4 v11,0x1return v11

注意!返回那个变量,就位那个变量赋值,否则返回的仍有可能是假值,导致欺骗失败。

仅仅是交流学习经验,遵从版规就不放成品了,放一个样本吧,有老哥想做注册机https://obiu.lanzouj.com/id4odkj


留言评论
称呼
邮箱
网址