UC-Android逆向工程师 面试题1的分析
1.简介
这个题目是一位吾爱破解的坛友在面试UC的Android逆向工程事时,遇到的题目。此题不难,与阿里移动去年移动安全比赛的题目差不多,题目的验证方式也是查表对比,并且这个表的数据是放在文件中的。
2.题目分析
直接使用JEB对UC-crackme.apk程序进行反编译,得到下面的结果:
获取查询的密码表,即文件abcdefghddddd的文件偏移0x15D81开始到0x16081结束的0x300字节的数据。
获取中间参与最终字符串比较的18字节的数据即文件abcdefghddddd的文件偏移0x16481开始的后面18个字节的数据。
通过用户输入的注册码,查询密码表获取参与比较的密码字符串。
经过前面的分析,写了个注册机,代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
/**
*
*/
/**
* @author Fly2014
*
*/
public class Key
{
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
// 创建文件类
File file = new File("abcdefghddddd");
// 构造文件输入流
FileInputStream fileInputStream = new FileInputStream(file);
// 获取文件的大小
int nFileSize = fileInputStream.available();
// 申请内存空间
byte[] byteArryFile = new byte[nFileSize];
byte[] byteArryTable = new byte[768];
byte[] byteArryResult = new byte[18];
// 读取文件的数据到内存中
fileInputStream.read(byteArryFile, 0, nFileSize);
// 获取密码查询表0x300字节
System.arraycopy(byteArryFile, 0x15D81, byteArryTable, 0, 768);
// 获取最终参与比较的18字节的密码
System.arraycopy(byteArryFile, 0x16481, byteArryResult, 0, 18);
// 密码查询表转utf-8格式
String strTable = new String(byteArryTable, "utf-8");
// 18字节密码装utf-8格式
String strResult = new String(byteArryResult, "utf-8");
// 存放用户输入的注册码
StringBuilder strBuilderKey = new StringBuilder();
// 包里查询破解
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 255; j++)
{
if (strTable.charAt(j) == strResult.charAt(i))
{
// 获取用户输入的字符
strBuilderKey.append((char) j);
break;
}
}
}
// 输出key
System.out.println("输入的注册码:" + strBuilderKey.toString() + "\n");
// 参与比较的最终密码
System.out.println("比较的中间密码:" + strResult.toString() + "\n");
System.out.println("显示查询密码表:");
for (int a = 0; a < 255; a++)
{
System.out.print(strTable.charAt(a));
if ((a + 1) % 51 == 0 && a != 0)
{
System.out.print("\n");
}
}
}
}
经过分析发现,最终的输入字符串是581026。
分析文档的下载地址:http://download.csdn.net/detail/qq1084283172/9029777
UC-Android逆向工程师 面试题1的分析的更多相关文章
- UC-Android逆向工程师面试第2题分析
博客链接:http://blog.csdn.net/qq1084283172/article/details/52133172 一.简介 这个题目是别人面试UC优视集团Android逆向工程师一职位的 ...
- Android逆向工程师的黑科技
你们发现了吗?Android逆向.安全方面的工程师真的越来越"稀有"了. 以腾讯.美团.百度为代表的大厂们,在某招聘网站上居然薪酬高达30-60k. 现在移动端市场越来越火热,AP ...
- Android中高级工程师面试题
https://www.cnblogs.com/huangjialin/p/8657565.html(存在不少答案错误,可参照知识点复习,答案不可全信) 上 https://www.cnblogs. ...
- Mc小冰总结的Android开发工程师面试题以及答案,android程序员必备,详解
1.请谈一下Android系统的架构. 答:Android系统采用了分层架构,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 2.谈谈android大众常用的五种布局. ...
- 整理最全的Android开发工程师面试题,面试题详解。java、Android程序员
1. 请描述下Activity的生命周期. 必调用的三个方法:onCreate()--> onStart() --> onResume(),用AAA表示 (1)父Activity启动 ...
- Android开发工程师面试题总结。android开发面试经验
1:Android中五种数据存储方式分别是什么?他们的特点? (1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中 (2) SQ ...
- Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解
Message:消息:其中包含了消息ID,消息对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理 Handler:处理者:负责Message发送消息及处理.Handler ...
- 刷了无数大厂Android研发岗面试题,其实考的无非是这 3 点能力
前言 发现一个有趣的现象,似乎程序员们对面试题总是抱有热情,多看几道面试题,自己的面试能力就可以提高一点. 作为一个研发工程师,看过很多公司的面试题,也参与过很多公司的面试,发现大厂的面试题更加具有代 ...
- [转]Android逆向之动态调试总结
一.在SO中关键函数上下断点 刚学逆向调试时.大多都满足于在SO中某关键函数上下断点.然后通过操作应用程序,去触发这个断点,然后进行调试 详细的步骤可以参见非虫大大的<Android软件安全与逆 ...
随机推荐
- 鸿蒙的js开发部模式18:鸿蒙的文件上传到python服务器端
1.首先鸿蒙的js文件上传,设置目录路径为: 构建路径在工程主目录下: 该目录的说明见下面描述: 视图构建如下: 界面代码: <div class="container"&g ...
- 002-LED闪烁
LED闪烁 功能:控制LED模块的小灯闪烁 #include<reg52.h> // 头文件 sbit LED = P2^0; // LED接低电平 void main() //主函数 { ...
- 【白话科普】CDN & 游戏加速器,两者是一个原理吗?
说起加速,大家可能就会联想到"游戏加速"之类的场景,而说到现在流行的云服务加速,则离不开 CDN 这个词.那么 CDN 和游戏加速器是同一种东西么?从效果上看两者都是为了" ...
- [源码分析] 消息队列 Kombu 之 启动过程
[源码分析] 消息队列 Kombu 之 启动过程 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Kombu 是 ...
- Java8的新特性--函数式接口
目录 函数式接口 什么是函数式接口 函数式接口的使用 Java8内置的四大核心函数式接口 一.Consumer:消费型接口(void accept(T t)) 二.Supplier:供给型接口(T g ...
- 2019 GDUT Rating Contest I : Problem A. The Bucket List
题面: A. The Bucket List Input file: standard input Output file: standard output Time limit: 1 second Me ...
- ResNet的个人总结
ResNet可以说是我认真读过的第一篇paper,据师兄说读起来比较简单,没有复杂的数学公式,不过作为经典的网络结构还是有很多细节值得深究的.因为平时不太读英文文献,所以其实读的时候也有很多地方不是很 ...
- 攻防世界 reverse tt3441810
tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...
- 【Makefile】2-Makefile的介绍及原理
目录 前言 概念 Chapter 2:介绍 2.1 makefile的规则 2.3 make 是如何工作的 ** 2.5 让 make 自动推导 2.8 Makefile 里面有什么 2.9 Make ...
- INTERSPEECH2020 语音情感分析论文之我见
摘要:本文为大家带来InterSpeech2020 语音情感分析25篇论文中的其中8篇的总结. 本文分享自华为云社区<INTERSPEECH2020 语音情感分析论文总结一>,原文作者:T ...