人工智能计算器AI Calculator 3.3.0 具体破解思路&教程

【文章标题】:人工智能计算器AI Calculator 3.3.0 具体破解思路&教程
【文章作者】: Ericky
【作者邮箱】: hy_xiaoyu@126.com
【下载地址】: 附件附上
【保护方式】: 360加固
【作者声明】: 主要记录自己的学习过程!欢迎交流学习

0x1脱壳

具体的脱壳去看看曾经的一些文章,此篇文章主要讲破解部分,壳就略过了

0x2破解

先安装程序,看看错误提示,所谓知己知彼百战不殆正是如此 如图所看到的:

点击后会弹出授权失败的错误提示。
此时我想应该有非常多同学会第一时间想到搜索字符串,既然这样,我们来搜索一下字符串例如以下,支付失败的字符串我们是搜索不到的,可是能搜到这个:

这样就能够定位到package longbin.helloworld;中的hn类
hn类中一共同拥有几个分支 一一来看一下:
分支1 –arg11.what == 111111的分支

if(arg11.what == 111111) {this.a.d.dismiss();if(this.a.f) {v0 = this.a.getSharedPreferences("mySharedPreferences", 0).edit();v0.putString("alipay_appid", m.e(this.a.p));v0.commit();v0 = PreferenceManager.getDefaultSharedPreferences(this.a).edit();v0.putString("WWxoT2JnPT0=", hj.c(this.a.p));v0.putBoolean("isDefaultTheme", true);v0.putString("font_size", "24");v0.commit();this.a.c.setEnabled(false);new AlertDialog$Builder(this.a).setTitle(v2).setMessage(v4.getString(2131230970)).setPositiveButton(v4.getString(v9), new ho(this)).create().show();return;}v0 = PreferenceManager.getDefaultSharedPreferences(this.a).edit();v0.putBoolean("isDefaultTheme", false);v0.putString("font_size", "28");v0.commit();new AlertDialog$Builder(this.a).setTitle(v2).setMessage(v4.getString(2131230972)).setPositiveButton(v9, new hp(this)).create().show();return;}

当启动程序后,进入授权页面点击button后Handler会处理这个分支

分支2 –arg11.what == 1001的分支

if(arg11.what == 1001) {ik v5 = new ik(arg11.obj);v5.a();if(!v5.d) {return;}if(this.a.p.equals(this.a.q)) {v0 = this.a.getSharedPreferences("mySharedPreferences", 0).edit();v0.putString("alipay_appid", m.e(this.a.p));v0.commit();SharedPreferences$Editor v5_1 = PreferenceManager.getDefaultSharedPreferences(this.a).edit();v5_1.putString("WWxoT2JnPT0=", hj.c(this.a.p));v5_1.putBoolean("isDefaultTheme", true);v5_1.putString("font_size", "24");v5_1.commit();this.a.c.setEnabled(false);int v6 = Integer.valueOf(this.a.h[this.a.o]).intValue();int v0_1 = v6 == 4 ? 1 : 0;if(v6 == 8) {v0_1 = 2;}SimpleDateFormat v3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date v1 = new Date();String v6_1 = v3.format(v1);if(this.a.r != null && !"".equals(this.a.r)) {try {v1 = v3.parse(this.a.r);}catch(ParseException v1_1) {v1_1.printStackTrace();v1 = ((Date)v2);}if(v1 != null) {v1.setYear(v0_1 + v1.getYear());}this.a.r = v3.format(v1);}else {v1.setYear(v0_1 + v1.getYear());this.a.r = v3.format(v1);}v5_1.putString("V2xob2QyRllTbXhhUmprd1lWY3hiQT09", hj.c(this.a.r));v5_1.commit();new AlertDialog$Builder(this.a).setTitle(v2).setMessage("支付成功!授权已生效,您如今可使用付费功能了。

\n您的付费时间为: "

+ v6_1 + "\n您的授权期限为: " + this.a.r).setPositiveButton(v4.getString(v9), new hq(this)).create().show(); return; } new AlertDialog$Builder(this.a).setTitle(v2).setMessage(v4.getString(2131230971)).setPositiveButton( v4.getString(v9), new hr(this)).create(); return; }

这个就是付费成功的分支,经过对2个分支的对照,能够非常清楚的看到以及知道这几句是功能恢复的关键代码:

当中有个bool值this.a.f就是整个程序的关键。

能够在这里直接爆破给this.a.f 一个不等于0的值也能成功。
可是为了防止此值在其它地方也有调用,我们还是继续找源头。
找到PayActivity的authoritybutton例如以下为this.c:

这里对this.a.f 进行了赋值false。更加肯定了我们的推断
跟入ic类:

如图。起了一个线程id类。继续跟进,在.class final Llongbin/helloworld/id 类添加一句 const v1, 0x1 达到对f的赋值:f事实上就是IsPayUser.

这里的SendEmptyMessage(111111);也是与前面的分析相呼应。
这种话,程序就被破解了。最重要的是流程大家都清楚了。不是糊里糊涂的碰对的。这才是提升水平的关键。

0x3 过重新启动验证

既然重新启动验证。那就定位到HelloWorldActivity Class吧
一路往下找,到这里就比較可疑了:

为什么说他能够,假设用心的人就能够知道,在前面破解分析的分支2里面的支付成功,也是取了时间的。这里就应该是取时间来推断是不是真正的注冊了。或者说是用来验证用户的付费是不是过期了。恰好把一些破解变得不够完美了。

假设你没注意到这个时间。那也不要紧。这2句代码也足够了:
this.cf.putBoolean(“isDefaultTheme”, false);
this.cf.commit();
之前授权成功的时候运行的应该是这种:
this.cf.putBoolean(“isDefaultTheme”, true);
this.cf.commit();
所以仅仅要绕过这个地方就能够达到过重新启动验证的目的了。
方式就是启动这个类中的标签。

当然 你也能够改动跳转。总之,达到目的即可了。

0x4 去广告

删除androidmanifest.xml中的这几句:

 <meta-data android:name="UMENG_APPKEY" android:value="541435b6fd98c50ae307da98"/><meta-data android:name="UMENG_CHANNEL" android:value="baidu"/><meta-data android:name="COOLCHUAN_KEY" android:value="e47a7d143004499ea30fd6a22146b59a"/><service android:name="com.umeng.update.net.DownloadingService" android:process=":DownloadingService"/><activity android:name="com.umeng.update.UpdateDialogActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

至此程序就完美破解了。

总结一下。破解程序应该改动越少越完美,既降低了你的工作量与出错率。又保证了程序功能的完整性。有的程序不难。可是须要你的耐心。认真破解一个比你任意破解多个更能提升你的实力。
2015.7.13
By Ericky

转载于:https://www.cnblogs.com/zhchoutai/p/8378162.html

人工智能计算器AI Calculator 3.3.0 具体破解思路amp;教程相关推荐

  1. 人工智能计算器AI Calculator 3.3.0 详细破解思路教程

    人工智能计算器AI Calculator 3.3.0 详细破解思路&教程 [文章标题]:人工智能计算器AI Calculator 3.3.0 详细破解思路&教程 [文章作者]: Eri ...

  2. 浪潮信息人工智能巨量模型“源1.0”,切实促进AI行业高质量发展

    自从GPT-3发布以来,大模型成为几乎所有全球头部AI企业的逐鹿目标.浪潮信息作为全球领先的AI厂商,也高举巨量模型的大旗,加速创新研发.在10月26日于北京举行的2021人工智能计算大会(AICC ...

  3. 零基础AI人工智能的学习之路-从0到1-浅谈

    文章目录 0.背景 0.1. 知己 0.2. 知彼 1.if转行,这些文章可以参考学习 2.学习之路 2.1 个人学习之路 2.2 推荐的学习之路 3.推荐学习利器 3.1 Kagge 3.2 菜鸟教 ...

  4. 百度AI开放平台3.0:平等赋能成为百度AI关键词

    "让每一位开发者都能平等便捷地获取AI能力是我们的愿景,也是我们的承诺.我们非常感谢各位合作伙伴.开发者使用百度的AI能力,让人们的生活更便捷.让学习更有趣.让企业管理更高效.让人类更健康. ...

  5. 第四次工业革命:人工智能(AI)入门

    转载自 http://www.infoq.com/cn/articles/the-fourth-industrial-revolution-an-introduction-to-ai "过去 ...

  6. 2021零基础学习人工智能(AI)思想篇

    0.为什么写这篇文章 这并不是一篇人工智能入门指导的文章,还给不了入门书籍.教程.建议与学习路径.只是一个小白在决定进入这个领域时将整个思想过程以及接下来学习路上踩的坑.总结与经验系统性的记录,希望能 ...

  7. 【张钹院士 | 大师谈AI】迈向第三代人工智能「AI核心算法」

    关注:决策智能与机器学习,深耕AI脱水干货 作者:张钹, 朱军, 苏航  报道:中国科学杂志社 如需转载,请联系作者 摘 要 人工智能 (artificial intelligence, AI) 自1 ...

  8. 科普贴开篇:到底什么是人工智能(AI)、机器学习(ML)和深度学习(DL

    [https://zhuanlan.zhihu.com/p/26442277] 科普贴开篇:到底什么是人工智能(AI).机器学习(ML)和深度学习(DL) 优雅的程序员 9 个月前 这两年创业圈.技术 ...

  9. 清华大学美女学霸“华智冰”是假的?--人工智能(AI)的前世今生

    近期清华大学首个人工智能学生华智冰火爆全网的,虽然"她"技能爆表,但也只是"假的".她是由北京智源人工智能研究院.智谱AI团队.小冰公司联合研发.那么我们就来看 ...

最新文章

  1. php广告插入代码,[教程]如何在phpcms中添加html代码广告
  2. cdata节 赋值变量_JS原生练习题:第二课第5~12节
  3. python控制苹果手机触摸屏失灵怎么办_iphone触摸屏失灵怎么办 iphone触摸屏失灵解决办法【详解】...
  4. 2019编译ffepeg vs_2020/5-Win10下ffmpeg最简编译方法
  5. 人生的第一个博客(●'◡'●)ノ♥--开博典礼
  6. 女孩看男孩VS男孩看女孩
  7. java 平台级模块系统_Java平台模块系统公众审查未能通过
  8. oracle生成字母序号6,创建以字母数字开头的Oracle序列
  9. java 关闭启动日志,求助啊无法启动java了点开就是报错要求查看日志
  10. Illustrator 教程,如何在 Illustrator 中编辑路径和形状?
  11. 云网融合:中国电信国际公司的海外野心
  12. BootStrap自定义小图标
  13. java.util.timer_java.util.Timer分析源码了解原理
  14. windbg下载符号方法
  15. 第六周学习周报20181015-20181021
  16. java编写一个学生类和教师类_JAVA:1、编写一个学生类,类名为Student,包含如下成员:...
  17. CsvWriteramp;amp;CsvReader
  18. c++ 图的连通分量是什么_7.1 图的定义与基本术语
  19. win7 打开防火墙端口
  20. 关于三星设备 Activity.onDestroy() 被调用。显示“开发者选项”

热门文章

  1. Vue mixins 和 extends 使用详解
  2. 如何玩转活动场景互动营销,微会动平台创始人袁帅教你三招
  3. 帮助提升与学习的方法
  4. SetEvent,ResetEvent
  5. WAP网站设计 xhtml mp
  6. geth账户管理转账
  7. 初学 Java 设计模式(五):实战原型模式 「英雄联盟齐天大圣-真假猴王」
  8. marquee(文字滚动)标签
  9. 韦德电热板的产品特点及工作原理描述
  10. android auto touch,AutoTouch