2021-06-11反编译、静态分析、动态调试注册机
2021/6/11 10:23:41
本文主要是介绍2021-06-11反编译、静态分析、动态调试注册机,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
反编译、静态分析、动态调试注册机
本人接触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、附件
若本文对您有帮助,方便请点个赞噢。附件链接
这篇关于2021-06-11反编译、静态分析、动态调试注册机的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)