02_反汇编_反编译

实际上安卓的应用都是zip包,只不过把zip扩展名修改了,修改成了APK.所以如果你想拿到它的图片的话,实际上特别简单,你就把它这个.apk换成.zip.换成.zip之后这里的图片资源就都可以拿到了.

有些公司可能美工的水平或者美工的人数比较少,项目还比较急,这个时候就上网上去找。看谁的比较好看。下载下来之后扩展名换一换换成.zip就把它里面的资源就都拿出来了。这样就减少了一些成本。所以说这就是一个比较简单的办法。

它大部分图片都是放在hdpi。

用像素密度来区分不同的图片的文件夹。

 x越多,代表当前这个文件夹所对应的图片的分辨率、支持的像素密度就越高。

但是实际上大部分的应用并不会把所有的图片,每一个都搞出一份来丢到不同的目录下。这是没有人那么做的,因为你要那么搞的话你的应用的体积就会比较大了。它会根据不同的像素密度对这个图片进行压缩或者放大,就是自动去实现。大部分情况咱们只需要把这个东西丢在比较常见的像素密度的文件夹里,就是xhdpi或者是hdpi.这样就可以了。因为现在像mdpi的手机基本上已经绝迹了。ldpi和mdpi的手机特别特别少。所以咱们只需要把它放在hdpi和xhdpi.通过这种方式只能去拿到它的图片资源,你像所有的XML文件咱们是看不到的。


早期的反编译工具:

apktool是帮助把你的应用进行反编译的。

反编译之后咱们拿到的就是这两个东西

反编译之后再去看res/anim下相关的XML文件就没有问题了。

这样咱们就只能看到XML和它的资源。但是咱们现在是看不到源代码的。想看源代码就要用另外一个工具dex2jar.安卓中所有的.class最终都会打包生成一个dex文件。dex文件通过dex2jar可以转换成.jar.之前通过.jar来查看java代码就使用了一个工具叫JD-GUI.把.jar丢进去,丢进去之后就可以看到它对应的java的源代码了。

所以呢早期要通过三个工具:apktool、dex2jar、jd-gui这三个工具才可以把应用进行反编译。但是现在安卓逆向助手就把这些东西打了个包,我们可以使用安卓逆向助手的图形化界面进行反编译操作了,不用去记那些命令了。

 

 

 

 

java基础讲过,java不管是方法名还是类名都应该是有意义的,不能随便写。但是实际上在打包之前,它做了一件事情叫做混淆,混淆的作用就是迷惑你。提高了你把它代码读懂的难度。因为它的类名都没有意义。而且它的项目都比较大,有那么多个文件,都是a、b、c、d、e、f、g的。你想把它拆出来的话可能就比较费工夫了。安卓其实也没有特别复杂的一些逻辑,你有工夫猜它还不如自己写了。花功夫也是没问题的,也能猜个大概。但是真要花那么多时间去搞这个事的话还真不如自己写了。所以说一般的应用在上线之前都会去进行一个混淆的操作。但是有一些小的应用它也就懒得做这些事了,可能在混淆的过程当中会出现一些问题。比如你引入一些第三方的库,它这个库实际上在放到你的项目里面已经做了一次混淆了。做了混淆的话呢你再混淆它的时候就得加一些例外的情况。如果说这个小公司有一些开发的人懒得去搞这个事可能也就不混淆,拿着这个源代码直接就传上去了。所以你上市场上去找一些下载量不是很大的应用,你去翻一翻,也会有一定的积累能直接拿到它的源代码。

看一下这个java反编译之后实际上我拿到的就是混淆之前的源码。实际上我拿到的就是java的源代码.只不过呢它在打包之前做了一次混淆,虽说通过混淆可以去提高这个代码被破译的难度,但是呢真的去做的话实际上有一些逻辑还是可以看出来的。比如一些数据结构,例如HashMap

  private int a = 0;private int b = 0;private int c = 0;private int d = 0;private HashMap e = new HashMap();

还有一些是Map.Entry

    Map.Entry localEntry = (Map.Entry)localIterator1.next();

这些你真的是花点功夫的话,相对还是比较容易给它还原成最开始的样子。如果是没进行混淆的,例如之前写的ip拨号器.

 

如果你没做混淆的话基本上就相当于把你的源代码就丢到市场上了。正常来讲咱们发布之前都要对它进行混淆。关于混淆这部分的内容以后在就业之前还会有几天的课程。关于加密、打包、还有混淆相关的内容。现在咱们只需要搞清楚你反编译之后能拿到一个什么样的代码这样就可以了。

所以说如果你不做混淆这个java代码基本上就是相当于你把它丢到市场上去了。如果你不混淆的话,差不多就相当于你把这个源码就直接发到市场上了。你辛辛苦苦敲的这些东西别人一眼就可以看到。很简单,点一点就可以拿到它。

这个就是java的反编译的过程。


C的相对来讲就更安全一些。 有一个对C进行反汇编的工具。

 

 

 

这就是汇编的代码。PUSH就是压到寄存器里面。PUSH压到栈里。MOVS在寄存器里给它挪一挪。这个都是在ARM下的汇编的代码。如果你不懂汇编那就看不懂了。所以这个就相对来讲要比java要安全一些。

现在这个工具也有通过汇编给猜出C的功能。按F5

Pseudcode-A:伪代码-A.这就能通过汇编猜出它的伪代码出来.虽说它猜出了C的伪代码,但是实际上咱们写的跟这个还是差距蛮大的。专门做JNI的逆向的,可以自己去先写,写完之后他拿着自己的代码去进行反汇编。反汇编之后看一看这个东西长成什么样。

一看什么helloFromJava是方法名,()V是方法签名.也可以去猜你是要C回调Java.

所以说呢你说哪一种方式特别特别的安全,这个没有太特别安全的。只要被高水平的黑客盯上的话,被破解就是时间的问题。但是呢你要这么搞的话相对来讲这个安全性会高许多,比java的代码要高许多。所以一般都要把跟钱相关的,或者说像银行这样的应用,去跟动物相关的加密的这些业务逻辑,都要放在C这边去处理。而且C的代码它也可以去混淆。你也可以给它起一些很恶心的名字。也可以给代码里面加一些垃圾代码。所以说呢通过C来去做跟安全相关的这些业务逻辑,它是比java要安全很多。

这个就是java和C之间的反编译和反汇编的对比。实际上java的这个反编译直接就拿到了之前写的源码,或者说是混淆之后的源代码。但是C的这个.so文件对它进行反汇编你即使猜一下它的伪代码看起来呢也不是太靠谱。所以C的.so要比java的.dex或者是.jar或者是.class要安全许多。

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7148633.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL约束语法

约束 作用:对表中的数据进行限定,保证数据的正确性、有效性、完整性! 约束分类: 约束说明PRIMARY KEY主键约束PRIMARY KEY AUTO_INCREMENT主键、自动增长UNIQUE唯一约束NOT NULL非空约束FOREIGN KEY外键约束FOREIGN KEY ON UPDAT…

hdu 2489 Minimal Ratio Tree

https://vjudge.net/problem/HDU-2489 题意:求一个完全图的最优比率生成树,点的个数由题给出。最优比率生成树是边的权值之和与点的权值之和的比值最小的生成树。 思路:一开始用dfs枚举搜索每一种情况,t了,枚举的情况太…

SQL多表关联

多表关联: 多张数据表之间是可以有一定的关联关系,这种关联关系可以通过外键约束实现 多表的分类: 一对一一对多多对多 一对一: 一张表对应一张表 适用场景举例: 人和身份证。一个人只能有一个身份证,一个身…

背包问题 codevs2210 数字组合

数字组合 题目描述 Description在N个数中找出其和为M的若干个数。先读入正整数N和M, 再读入N个正数(可以有相同的数字,每个数字均在1000以内), 在这N个数中找出若干个数, 使它们的和是M, 把满足…

SQL多表查询

多表查询分类: 内连接查询 显式内连接隐式内连接 外连接查询 左外连接右外连接 子查询自关联查询 准备数据: -- 创建user表 CREATE TABLE USER(id INT PRIMARY KEY AUTO_INCREMENT, -- 用户idNAME VARCHAR(20), -- 用户姓名age INT …

HTTP协议整理

一、概念 1.HTTP协议:即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和Web服务器之间互相通信的规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。它可以使浏览器更加高效,使网络传输减少。…

【DDD】--好文收藏

索引: 目录索引 发现一批好文,完整系列,攒~~ 随笔分类 - DDD - 『圣杰』 DDD理论学习系列(1)-- 通用语言 笔记: 通用语言: a) 简单,便于理解、传播。 b) 需要通用,能够准…

SQL存储过程、存储函数

概念: 存储过程和函数: 存储过程和函数是事先经过编译并存储在数据库中的一SQL语句的集合 存储过程和函数的好处: 存储过程和函数可以重复使用,减轻开发人员的工作量。类似于java中方法可以多次调用减少网络流量,存储…

meta http-equiv=X-UA-Compatible content=IE=edge,chrome=1 /

X-UA-Compatible是针对IE8新加的一个设置&#xff0c;对于IE8之外的浏览器是不识别的&#xff0c;这个区别与content"IE7"在无论页面是否包含<!DOCTYPE>指令&#xff0c;都像是使用了 Windows Internet Explorer 7的标准模式。而content"IEEmulateIE7&quo…

错误页跳转

错误页跳转的语法 <%page errorPage"出现错误跳转页面"%> <%page isErrorPage"true/false%>跳转到此页面进行处理错误 代码如下&#xff1a; <%page language"java" contentType"text/html" pageEncoding"GBK"%&g…

yum 安装mysql数据库

1、先查看是否有安装mysql&#xff0c;有的话通过yum remove mysql先卸载掉&#xff0c;卸载完成后执行 yum install -y mysql-server mysql mysql-deve 2、启动mysql服务 service mysqld start  //也可以通过/etc/init.d/mysqld start启动 3、设置为开机自启动 chkconfig m…

修改项目名称之后,访问不到项目的问题

转载于:https://www.cnblogs.com/Joke-Jay/p/7190187.html

Mysql锁机制详解

Mysql锁&#xff1a; 在多线程当中如果想保证数据的准确性是如何实现的呢&#xff1f;没错&#xff0c;通过同步实现。同步就相当于是加锁。加了锁以后有什么好处呢&#xff1f;当一个线程真正在操作数据的时候&#xff0c;其他线程只能等待。当一个线程执行完毕后&#xff0c;…

stanford-parser for C#

在项目里用到C#对英文句子进行词性标注。比較成熟的英文词性标注软件是stanford-parser。它个C#版本号&#xff0c;也是借助于IKVM完毕JAVA-C#的转换。详细配置过程例如以下&#xff1a; 1、下载stanford-parser的jar包 http://nlp.stanford.edu/software/lex-parser.shtml 2…

保姆级Mycat操作详解

Mycat环境搭建&#xff1a; 下载&#xff1a;http://dl.mycat.org.cn/2.0/ 上传到虚拟机并解压 tar -zxvf mycat.tar.gz cd mycat ll授权&#xff1a;设置mycat权限 chmod -R 777 mycat环境变量&#xff1a;配置环境变量 # 编辑文件 vi /etc/profile # 添加内容&#xff…

百度陆奇最新内部演讲:如何成为一个优秀的工程师?

作者&#xff5c;陆奇 来源&#xff5c;百度 Family 一位工程师&#xff0c;如何才能称得上优秀&#xff1f;除了写得一手好 Code&#xff0c;什么样的工作态度和方法才是一个优秀工程师的必备&#xff1f;7 月 11 日&#xff0c;陆奇出席百度内部 Engineering Leadership Talk…

最常见的水平拆分规则

1.枚举法&#xff1a; <tableRule name"sharding-by-intfile"><rule><columns>user_id</columns><algorithm>hash-int</algorithm></rule></tableRule> <function name"hash-int" class"io.myca…

TestNG-详解preserve-order的作用与测试case的执行顺序

在TestNG xml配置文件中&#xff0c;关于<test>的配置里面&#xff0c;有一个属性叫preserve-order&#xff0c;一开始以为这个属性可以用来控制测试case(那些被Test注解标注的方法)的执行顺序&#xff0c;后来测试了一把&#xff0c;发现没有这种效果&#xff0c;最后上…

数据库连接JDBC

JDBC&#xff1a; JDBC&#xff08;Java DataBase Connectivity,java数据库连接&#xff09;是一种用于执行SQL语句的Java API&#xff0c;可以为多种关系型数据库提供统一访问&#xff0c;它是由一组用Java语言编写的类和接口组成的。其实就是java官方提供的一套规范(接口)。用…

【bzoj】 1412: [ZJOI2009]狼和羊的故事

Description “狼爱上羊啊爱的疯狂&#xff0c;谁让他们真爱了一场&#xff1b;狼爱上羊啊并不荒唐&#xff0c;他们说有爱就有方向&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;&#xff0e;” Orez听到这首歌&#xff0c;心想&#xff1a;狼和羊如此和谐&am…