程序地址:
https://github.com/num1r0/android_crackmes
破解过程
将程序APK放入Jeb中,感觉MainActivity有点像Qt中的QMainwight主窗口故直接进入查看
问题一:窗口中有点像汇编语言是是什么?
问题二:安卓程序的目录结构是什么?
看不懂,直接反汇编:
代码逻辑更清楚了,onCreate中为submit按钮绑定了一个事件,当按钮被单击时获取id为password的文本输入框的内容进行校验,如果校验结果不为null则认为是ok,然后再来看校验的那部分:
在getFlags()函数中可以很容易的看出内置的字符串s3cr37_p4ssw0rd_1337。将其输入破解成功。整个过程很简单,反编译后根据简单的代码逻辑跟进就行。
今日所学
问题一解决:
逆向之Smali入门学习 - 『移动安全区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
smali语法从入门到精通-CSDN博客
Dalvik 字节码格式 | Android Open Source Project (google.cn)
经过查阅资料,这种语言是smali是Dalvik 字节码的汇编语言表示形式。但与PC上C程序从编译到运行程序过程中(包括预处理、编译、汇编和链接四个主要阶段。)有一个显式的汇编阶段,即编译器将 C 代码转换成汇编代码(ASM),然后汇编器将汇编代码转换成机器码,这个过程是将高级语言(C)转换成底层机器码的重要步骤之一。但smali并不显式出现在Android 应用程序的编译和运行过程中。他的作用好像仅仅限于便于对Dalvik 字节码的阅读和修改。
什么是Dalvik?见百度:
用于Android平台的虚拟机,Dalvik是Google公司自己设计用于Android平台的虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且 [1]每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
个人感觉就像是docker作用一样,将应用包括环境打包成独立运行环境而不影响同一操作系统上的其他应用
但百度解释中的.dex格式又是什么?一切像是没有限制条件的递归,好像并未触及本质,不禁想要问出接下来的两个问题:
1.问题三:什么是android?
Android 操作系统的体系架构和主要组成部分如下:
[ol]
[/ol]
[/ol]
[/ol]
[/ol]
[/ol]
[/ol]
2.问题四:android编译到运行全过程?
类比于PC机上的应用编译到可执行文件.exe,可以用
[table]
[tr]
[td]阶段[/td]
[td]C 语言流程[/td]
[td]Android 应用程序流程[/td]
[/tr]
[tr]
[td]编写代码