阿里移动安全 Writeup
2015-08-18 23:20
489 查看
0x0
弱菜愚昧,14年的东西, 现在才做, 不过,加油就行。0x1
第一题
直接上代码String v3 = this.val$edit.getText().toString(); String v5 = MainActivity.this.getTableFromPic(); String v4 = MainActivity.this.getPwdFromPic(); Log.i("lil", "table:" + v5); Log.i("lil", "pw:" + v4); try { String v2 = MainActivity.bytesToAliSmsCode(v5, v3.getBytes("utf-8")); Log.i("lil", "enPassword:" + v2); } catch(UnsupportedEncodingException v1) { v1.printStackTrace(); } if(v4 == null || (v4.equals("")) || !v4.equals(v2)) { AlertDialog$Builder v0 = new AlertDialog$Builder(MainActivity.this); v0.setMessage(2131361809); v0.setTitle(2131361808); v0.setPositiveButton(2131361811, new DialogInterface$OnClickListener() { public void onClick(DialogInterface dialog, int which) {
看完代码就一个思路, 从图片获取一个table, passwd 。 然后根据我们的输入从table找一个偏移, 将连接后的字符串与passwd 比较。 这里因为有Log.i 所以DDMS里看一下就很明显了。 passwd is 581026
第二题
static { System.loadLibrary("crackme"); } public native boolean securityCheck(String arg1) { } public void onClick(View v) { if(MainActivity.this.securityCheck(MainActivity.this.inputCode.getText().toString()) ) { MainActivity.this.startActivity(new Intent(MainActivity.this, ResultActivity.class)); } else { Toast.makeText(MainActivity.this.getApplicationContext(), "验证码校验失败", 0).show(); }
关键的就这么几行 , 这里指示我们要去native 层找线索, 直接把lib拖进ida.
有个关键的对比 ,但是并不正确, 猜测可能是javahook 之类的。
动态调试吧。 IDA附加到apk的流程这里不多说了,只是一开始attachapk就挂了,没办法 ,就用jdb断在JNI_onLoad上,然后就是运行一下去看原来的那个字符串, 发现现在是aiyou,bucuoo了。
第三题
今天暂时到这里有兴趣的朋友可以看看看雪的writeup , 两个大牛都很赞
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories