标签:11 反编译 用户名 06 注册机 点击 注册码 调试
反编译、静态分析、动态调试注册机
本人接触Android不久,但Android开发不是我的主要目的,工作上需要用到逆向,现本文尝试分析注册机程序,我相信在逆向方面会有一些基础了解。本次调试过程,希望可以帮助到您,本人水平有限,若您发现有错误之处,恳请指正。
0、准备工作
电脑: Window10
手机: AndroidPhone(Version >=5.0)本人使用Redmi note 4x
环境: Java 1.8.0_121
调试: JEB V2.2.7
0.1 将apk软件安装到手机上
可通过adb命令安装,命令:adb install 案例apk7.apk
或
直接下载到手机上从文件管理处安装。
0.2 打开APP
0.3 任意输入字符,提示注册机:无效用户名或注册码
0.4 这么能忍?
准备搞它
- 分析和调试
1.1 打开JEB工具JEB2.2.7
1.2 将apk文件拖进反编译工具,自动完成进行反编译
2、关注点
2.1 关注Bytecode
可以看到如下界面,Manifest就是xml文件,Certificate是证书,Bytecode是字节码,Resources是资源。
双击Bytecode
说下快捷键:Q键,在切换smali代码和java代码中切换。
3、开始分析
3.1 静态分析MainActivity
关键方法checkSN()
静态分析结果
这是一个boolean返回值的方法,该将用户名和注册码作为参数传进来,默认返回false。
当用户名为空时,直接返回false。
如果用户名长度不等于0且注册码不等于空且注册码长度为16位,则计算MD5。当md5值跟传进来的注册码一致时,将返回true。
我们要得到它的值,就是我们的注册码。
3.2动态调试
我们在这个地方下断点:
使用Q键切换到smali代码,使用CTRL+B下断点
下好断点后,点击菜单栏的Debugger的Start...
点击确定
选择模拟器,搜索进程com.qianyu.zhuceji
点击Attach
出现这个界面
打开手机注册机APP
用户名输入111
注册码输入01234567890123456
点击注册按钮
点击单步跳过
此时v6有值了。
修改v6寄存器的类型为string
值变为""685a9811e8497716""
记录下该字符串。
点击停止调试
注册机程序自动退出。
4、结果
我们重新打开注册机APP,用户名输入111,注册码输入"685a9811e8497716"
提示注册成功。
5、总结
本次注册机的app比较简单注册机程序未经过加壳,经过简单的反编译后,稍作smali代码静态分析,就可以轻松动态调试。
6、重要
个人接触Android不久,水平有限,对于博客有错误的地方,恳请您积极纠正,谢谢您!
7、附件
若本文对您有帮助,方便请点个赞噢。附件链接
标签:11,反编译,用户名,06,注册机,点击,注册码,调试 来源: https://blog.csdn.net/m0_38076341/article/details/117805709
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。