00:00
呃,其实这里边儿呢,我们,嗯。不准备去详细的讲如何实现代码混淆啊,然后里边涉及到这个混淆的这个语法呀,这就是相当于另一门语言一样了哈,这就得讲好几天了,这也没有必要去讲,这就我们就了解一下就行了啊,比如说到代码混淆啊,反编译啊,这个一点概念也没有啊,有这样个概念就可以啊,所以那就稍微说一下啊,首先呢啊,这是反编译工具,这就不多说了啊,我们一会直接用的时候来看啊,哎,反编译。反编译,先说反编译,然后再说这个代码混淆反编译应该都清楚这个概念吧。不清楚啊,那编译的话呢,不就是我们把这个能你能看得懂的Java代码,或者这个图片呀,插照文件呀,编译成一个文件。啊,然后呢,就比如我们刚才这个APK文件啊,呃,它呢本质上是一个zip文件,那我们呢,就把它改成是一个zip。改完以后的话呢,打开里边呢,就有这样的一些信息,呃,一看呢,是功能清单文件,我们呢就有兴趣打开一下,事实上呢,你是看不了的。
01:02
啊,因为这是编译以后的一个文件,它不是一个可读的啊,包括呢,我们这呢,看到这个DES啊,这都是你自解码文件呢,整合成一起的一个子写法文件啊,这个你根本看不了。啊,当时什么可以看啊。对这个res呢,就是我们说这个资源啊,资源下面你看这些图片啊。这些图片其实都是可以看的,嗯。它这是一个什么图啊。这个我解压完以后应该能看啊,就是它应该是有个具体的一个图了,这个是没有问题的。换一个就这这不就能都能看啊,嗯,当然这里边你看看那个什么能看吗?就是。呃,像我们这个招下不有这个成包文件吗。点开。是不是也不行啊。这些都看不了啊,就是你只有是纯图片啊,是可以看的。那其他的都看不了,那编译的话呢,就生成这样一个压缩文件了,里边呢生成自解码文件,反编译呢,不就是它的一个逆过程嘛,那相当于我们有了这样一个应用以后呢,我希望反着过来,能不能把它原来怎么写的这个Java逻辑啊,这个这个插包文件啊,全部给它再还原回来,这个还原的过程呢,你就叫反编译了。
02:14
啊,这个反面的话呢,肯定如果要都好使。那你就现在不用干别的了是吧,那就把那个应用市场上的应用呢,都反编一下,然后自己改个名,就说自己的再打个包上去是吧。嗯,没那么简单,所以这里边儿呢,就提到这个代码混淆啊。行,这呢,我们就先按照这个过程来说哈,首先呢叫反编译资源文件,就是反编译呢,我们分成两个层面哈,一个呢叫资源文件,一个呢叫类文件。另一个念呢,就是我们写的那个Java。啊,资源文件呢,就是像这个插包文件啊,这个这个select选择器啊,布局文件啊,包括呢这个功能清单文件,像这些呢,都算是叫资源文件。啊,那他们呢,怎么去给他反编译,就像我们刚才看到的这个解压完以后呢,这些工具文件也好,还是呃招呼下边这个select也好,看不了啊,哎,我们看看这些呢,能不能给他反编一下,然后看一看啊。
03:12
那找到我们刚才的这个文件目录。不是这啊。嗯,这个呢,是我们那个测试的啊,测试的先。嗯,测试的用人测试也行,一会儿我们看下这个测试的啊。来,我把测试这个里边其中一个吧,这个给它拿出来,这个呢,是咱们刚才那个咱们自己的应用的啊,我还改成一个AK吧。好。行,然后的话呢,找到这个工具,工具呢,打开以后这里面有挺多的,因为这个有好几个测试的,也不是特别好使啊,我们先来看一下这个反编译一下资源文件,找到这个APK图打开,打开以后的话呢,怎么办呢,这样。命令。嗯,命令行进来以后呢,到你当前那个目录下。
04:02
我这是在E盘,所以这呢我就先输一个E,然后呢CD。把刚才这个路径呢给他粘过来回车。就就在这个路径下了,在这个路径下以后呢,输入这个命令啊,嗯,输入这个。APK。然后呢,D-F。嗯,然后呢,把你看你要反编译谁哈,这是咱们自己这个应用的。那就自己练英吧。粘过来,然后的话呢。嗯,后边起一个名字,这呢咱们叫硅谷。嗯吧。起个名字哈,然后回车一下。搞错了是吧,说不能够,嗯,Could not decode。啊,这样的一个文件啊,就是这呢,属于这个反编译资源文件的这个工具,这个工具的话呢,相当于用这个还不太靠谱,就网上的话呢,你还得再找一找啊这个呢也很难,你说这找到说不像我们开发工一样,找一个特别完美的啊,那这个不行不行,我们就得再换一个啊,换一个比如拿这个为例吧。
05:14
这个是谁呢?这个就是嗯,这个金山的一个安全位置啊,可以装一下看看。嗯,打开。在这啊。就这个软件。啊,所以这你也可以给他扫毒啊,什么这这都可以用啊,那下边呢,我们就来看一下,就是把它呢,给它重新的反编一下资源文件,那还是2APK。To B-F这个你不用记啊,这个在这个文件里头。
06:03
过来,嗯,就写个金山吧。哎,这就可以了啊,那这边就生成这个文件了,打开这个跟我们刚才说的这个解压完以后一样,这个资源文件呢,里边插包文件看不了的,给你打开这res,打开一个job。这就这些文件吗,打开。那就可以看了。哎,这叫反编译资源文件啊。嗯,这样看这都没问题,然后看看别的。这样的。这样造的。啊,这这都可以看啊。嗯。嗯,但是呢,你说我想看一下他这个Java文件,Java文件不行,Java文件我们现在呢,不是用这样的命令,也不是用这样的工具了啊,得换别的工具才行啊。行吧,这就是这个事啊,就关于资源文件的一个,呃,反编译。
07:05
呃,那下面我们说说这个Java的啊。Java的话呢,这块嗯,你不用想太多,什么意思呢,就是人家如果经过代码混淆了呢,那这块呢,实际上你反编译呢,也是很困难的。啊,那你想要不的话呢。一个公司几百人的团队,有微信是吧,几百人团队,然后开发了两个多月开发出来的,然后你就用这个软件点了点。十分钟代码就写完了是吧?那这太不公平了。嗯,所以这呢,也算是互联网上的比较特殊的这样一个产品的一个特点啊,你像这个传统的讲,比如说生产电视,呃,然后呢,我又多了一个电视,这个多了一个电视,这个成本就得是多2000块钱,因为它就是成本就在那摆着的,就得是需要成本的,而这个互联网上其实很多这个产品的话呢。比如说你这一套操作系统可能花了1亿美金,你才把这套系统做好了,但是呢,你再多卖出一套这个系统,其实成本约等于零。
08:07
就跟刻一张光盘,你要非要说成本,那就一张光盘的成本啊,哎,你卖出来100套还是卖出101套,其实那个成本基本上是一样的,就相当于互联网这个产品,就是软件那个概念。其实很很,原来CTRLCCT就完事了是吧?啊,所以他这一社保成本就很小了,比如说那个互联网这个产品的编际成本是零。啊,那其实就互联网就有一个东西叫免费。啊,你在生活当中免费,你喝杯饮料免费,不可能,他这个饮料怎么也得有点成本,但是互联网上这个很多产品就可以免费,呃,因为免费,所以很多人都来,很多人都来了,哎,这就有人了,有人了就可以赚钱了。嗯,反编译这样的一个类文件还是用的工具,工具的话呢,这个大家也可以下去去搜一搜啊。呃,这里边儿呢,我这下了好几个哈,就这有的都。
09:02
有的不靠谱的话,这是一个,这是一个,这是一个。首先呢,这里边儿提到了一个点,就是反编译人类文件。嗯,旁边译这个类文件的话呢,我们这里其实还有一个概念,叫你到底混淆还是没有混淆过是有区别的哈,那我们先来看一下人家这个,呃,金山的这个手机位置,它呢是经过混淆了,等一下我们说一下这个混淆到底是什么啊,你可以先简单理解为就是。嗯,人家呢,修改完以后就混淆完以后呢,你这个代码你就不能够反编译看到人家的账号类了。啊,没有混淆的,那我以反编译呢,就能够看到,就这意思啊,那人家这个上线呢,肯定是混淆的,那我们这个呢,如果你这么实在呢,就是发了一个没有混淆。那就完了是吧,几分钟呢,那代码全就暴露给人家了啊,那我们先看下这个混淆的啊,混淆的话呢,我们这用这个工具吧。
10:03
嗯,然后呢,用这个工具我们打开一下,需要让你去选择一下这个文件的一个位置,呃,导入一下啊。给他。打开。他帮我们呢,去反编译。好反边以后呢,我们看看这边这个代码。包呢,还是能看到的。你看这里边儿呢,就会多了一些非常诡异的一些东西哈。比它多了什么abcd啊,这这样的这样一些东西。哎,这就是说明人家经过代码混淆了,就这里边呢,可能这个类实际上没有实际的意义。啊,但是呢,你这个,嗯,他就无缘无故给你加这么多东西,就影响你去。看人家这个程序吗。啊,就这样一个情况,你可以大概大概看一看啊,这就是经过混淆以后的这个点。啊。这个具体这个类呢,它到这儿它不叫这个类,但是他把这个类名给改了。
11:02
那它里边呢,可能是有这样的逻辑的,但是这个类门又变了,你根本就不知道它广泛这个不知道他要干什么啊。行这呢,就是经过混淆以后的这个啊软件,那我们这个呢,是没有混淆的。哎,我们没有混淆,我们该怎么去。呃,反编译一下看看,没混淆就能看到他的代码吗?这个。这是我们没有混淆的啊,打开打开。比较清楚啊,我们就看一下咱们这个吧。爱微博。这个呢?是不是还还比较清楚啊。怎么写的?这这用的那个集成那个十,你可看是不是都暴露的很明显。那这个呢,虽然你是呃是一个压缩文件,而且呢,我们如果你把它改成这个再进去Java代码肯定是乱码啊。
12:06
啊,这你不用多想,但是呢,我们通过这样一个反编译工具呢,这不我们就这样写的吗。这儿呢?嗯,这个是啊,除以二那这块有点问题是吧。对,16进制的二跟十进制的二是一样的。所以呢,这就写个二没事对着呢啊。你看这周都可以看到。哎,这就相当于是你写的代码呢,人家都可以直接粘过来用,哎,这就当于你没有经过代码,会叫他一个弊端。行,这就过了啊。嗯,然后的话呢,我们说一下什么叫代码混淆。哎,代码混淆呢,就是为了你写的这个代码不让别人看啊,但是呢,这里边需要说明的就是只能够混淆炸类,不能混淆自养文件。刚才不也看到了吗?这个金山呢,虽然它混淆了,但是我们张样可以看到它的资源文件,所以资源文件是混淆不了的啊,你混淆了别人也能够看,但主能混淆的就是我们这个Java文件哈,那我们主要来看一下如何去实现,实现的话呢,大家就照着这个去改一下就可以了哈。
13:13
怎么改呢?首先呢,我们看一下咱们写好的这个程序,它的一个G文件。在这儿。嗯,管的文件呢,往这往这看。这个位置呢,就表示的是混淆,说你是不是要混淆,我们都是写的,那现在呢,改成。哎,然后呢,下边它指明说,哎,混淆呢,需要用到一个工具哈,叫pro啊,对应的一个文件叫pround and enjoy.t。啊,那这个文件在哪。这个文件呢,实际上是在这儿。SDK打开有一个tools,这呢不就是pro吗?再打开这呢就是pround t ST。嗯,这个文件就是我们这里边引用的这个文件。
14:00
啊,这就是混淆所用的一个工具了啊这呢先把它改成是个true,然后这这就不用看了啊然后的话呢,指明说在pro rules.pro类文件当中添加下边的代码,这个文件在哪。啊,这个文件呢,就在这里边。在吧。啊,点开点开以后的话呢,呃,把下边这个代码从这一直到最后。哎,挺多的哈,CTRLC一下,嗯,你也不需要了解太多是吧,它就是混淆的一些规则啊,直接呢粘过来放到这儿。哎,下个你要做的事呢,就是同步一下。哎,同步下以后的话呢,我们再给他打个包。那这就可以了啊,然后再给他打个包。嗯,再填一下刚才那个文件的一个密码啊next,那这就不用了哈,直接呢就。
15:05
给你整一个这个。啊,还还就得选一个啊,你选一个吧。桌面这个有一个小米的,把这个删掉。啊,可以了,然后点开一下这个目录,呃,小米的那就是它,然后把这个呢,CTRLC一下,哎,我就放到这个桌面上啊好,然后呢,还有我们刚才说到这个工具。把它打开,我们呢,已经混淆过以后,现在呢,给它做一个反编译,看看可不可以。小米这个。好,此时的话呢,我们再打开。效果就有了。啊,就是他就想看的话,那就不是这么清楚了。啊,这就是一个代码混淆以后的再反编译的一个效果啊,那这打开这就乱七八糟的。
16:03
就这个意思啊。行,完事。
我来说两句