smali学习笔记之四种方法破解一个简单creakme

概述

自己以前学习android逆向的一个笔记,虽然超级简单,但是涉及到smali汇编,java层逆向的思路以及xposed hook的编写,log等浅显知识,适合零基础以及刚学android的同学看。

从为知笔记里导出来,貌似图片不能导出,要一个一个贴好麻烦

不知道有什么好办法

工具

androidkiller

androidstudio

夜神模拟器

pycharm

分析过程

安装到模拟器查看提示信息

我们看到这里提示无效用户名或注册码

smali学习笔记之四种方法破解一个简单creakme_第1张图片

androidkiller中反编译为smali

搜索字符串,定位关键点

先搜索无效用户名或注册码如果搜索不到可以转为Unicode再搜索,这里直接能搜到,而且只有一处

smali学习笔记之四种方法破解一个简单creakme_第2张图片

再去搜索unsuccessed

smali学习笔记之四种方法破解一个简单creakme_第3张图片

我们看到这个String类型的引用ID是0x7f05000b

smali学习笔记之四种方法破解一个简单creakme_第4张图片

我们看看哪里引用了这个ID 所以我们再搜索0x7f05000b发现只有一个地方引用

smali学习笔记之四种方法破解一个简单creakme_第5张图片

我们看这个引用的地方时在哪个方法中,我们发现是在OnClick方法中。

我们看这个类中有哪些方法

smali学习笔记之四种方法破解一个简单creakme_第6张图片

我们猜测 checkSN就是关键方法

关键代码分析

我们进到里面分析,我在里面做了详细的注释,可以看一下

由于我们是为了学习smali所以这里就不编译成java代码了我们需要一条一条的看smali汇编

smali学习笔记之四种方法破解一个简单creakme_第7张图片
smali学习笔记之四种方法破解一个简单creakme_第8张图片

我们这里梳理下登录的验证过程

判断用户名是否为空和长度是否为0

判断注册码是否为空和长度为0

求用户名的MD5值

将MD5转为宽字节字符串

将MD5的每隔1个取出作为注册码

解题思路

1. 爆破

第一种爆破:改判断的地方,比如长度,字符串等。

第二种爆破:将checkSn的返回值改为1 也就是true

都比较简单 这里不再赘述,有兴趣的可以自己试一试

2. smali注入log或者toast进行追码

插入log

smali学习笔记之四种方法破解一个简单creakme_第9张图片
smali学习笔记之四种方法破解一个简单creakme_第10张图片

插入toast

smali学习笔记之四种方法破解一个简单creakme_第11张图片
smali学习笔记之四种方法破解一个简单creakme_第12张图片

3. xposed hook

基本步骤

手机或者模拟器端安装框架

android studio 导入xposed模块

配置xml清单

编写代码

设置入口类

代码

smali学习笔记之四种方法破解一个简单creakme_第13张图片

本文由看雪论坛 lcdxsun 原创

原文链接:https://bbs.pediy.com/thread-250705.htm

你可能感兴趣的:(smali学习笔记之四种方法破解一个简单creakme)