Android stdio 第一个程序 Crackme1
安装Android Studio。
Crackme1
创建app
File->New Project[Application name: Crackme1,Project Location : ..;Company domain: ese.example.com]->Phone and Tablet[API 19…]->Empty Activity->Finish[默认就好]
布局框架
activit_main_xml编辑如下:
如图
填加需要的字符res->values->strings.xml
代码
接着编写MainActivity类的代码,添加一个checkSN()方法如下:
onCreate方法
运行结果:
技巧
调试信息: atl+6可以查看log.d()的调试结果.
修改保存路径: Create new project -> Select Project Location
生成apk的位置: 存储路径下app/build/outputs/apk
Terminal窗口: 可以查看当前文件的位置
生成版本: Build->Edit Build Types->release
生成: Build->Build Apk
破解Crackme1
破解Android程序通常的方法是将apk文件利用ApkTool反编译或者Apkdb反编译,生成Smali格式的返汇编代码,然后阅读Smali文件的代码来理解程序运行的机制,找到程序的突破口进行修改。最后使用ApkTool重新编译生成apk文件并签名,最后进行测试是否破解成功。
在实际的分析过程中,还可以使用ida直接分析apk,或者dex2jar与jd-gui配合来进行java源码级的分析等。
方法1
使用jd-gui查看Crackme1
这里就是返回结果为true则成功。接着我们使用apkdb[这是一键编译,方便点]反编译apk,并找到MainActvity.smali代码
调用checkSN方法,参数是传递两个string[p1,p2],返回值是Z[boolean]布尔型
这里将返回结果修改为1,
在进行打包和签名。安装,成功绕过。这里有反编译打包回来,签名的方法。
方法2
使用ddms动态调试,在程序算出sn的时候,我们将sn打印出来。
修改
这是添加log.d(“TEST”,v6),v6就是算出来序列号的值。然后在反编译回去,签名。运行结果:
输入,显示成功