大家会发现,在data目录下有一个文件对吧?我们来看看,这是2048游戏对吧?我们看一下这个报名。在这里,我们会发现一些文件,比如在利卜目录下的data什么的。IPP利卜目录下对吧?我们去找一下,因为我们搜索一下,会发现它们都在同一个文件夹下。我去找一下,看看有没有。还有点难找,但大家会发现这三个文件,得搜一下。然后还有这个尼布库,2DCP得搜。
那么,这里大家会发现一个有趣的现象,这个目录下的权限,大家会发现,都被修改了。密布目录下,它的权限被修改了对吧?777是吧,最高权限是吧?那这一步完成之后,大家会发现,我可以结束这个操作了,我把它关闭了,因为我已经执行完了。接下来,我们把相应的文件放在了指定的目录,之后,我们还要给相应的权限。稍等一下,我们给大家讲一下,相关命令的使用,因为刚才可能不是很清晰。我应该结束掉了哪个进程呢?这里的2048进程还没有结束,但好像出错了。这些都是进程,对吧?进程对应的这一行,大家看见了吧,是on。这一行数据就是带了一个进程的PID,进程的名称,后面是一个端口。好,我们继续来讲啊,首先要进入某个目录,象限。
如果要进入弱者权限,当然做手游辅助的话,你前期要有个弱者后的甄姬,刷机之后才能用,没有取得弱者权限的,是无法使用匠心命令的。下面我们来看一下,这个命令比较长,是不是?我写的话可能比较浪费大家时间,我就直接给大家念一下。我要对这个文件执行一个缺陷,所以我要给它一个权限,因为我要直接运行它,对吧?那它肯定要有可执行权限才行,所以我给它一个可执行权限之后,大家会发现,这个文件的状态发生了变化。这个在前面也给大家演示过,大家可以看一下状态的变化。
和其他的两个文件不同,这里尼泊扣个2DCP点是没有BAK文件的,然后会发现我们这个文件当中,有个BAK文件的说明,像尼泊科二DCP点受点什么BAK,这个BAK文件就是我们的备份文件,大家能理解吗?这个文件就是一个备份文件,那么我们在执行这个命令的时候,要检查一下有没有这个文件,如果有,就要把这个文件删除掉,是MV什么,删除掉这样一个文件。然后下面的命令大家都比较熟悉,我就不再重复讲了。接着我们来执行,我们的命令已经给好权限,然后我们差一个最后的步骤,就是要对哪个文件进行修改,我们也要指定一下,我把这个参数传进去,我们要对这个弥补什么科二2DCP点搜这样一个EF文件进行修改。大家会发现,它已经显示成功了。
所以所有的步骤都已经成功完成了,我们注意到,每一步都有了反应,直到执行到最后。这里反映出整个过程是成功的。但是成功之后,我们如何来确认修改是否成功呢?我们可以查看文件的反应,然后我们会发现,现在多出了一个bak文件,这个bak文件就是一个备份文件。
我们可以观察到,这个文件的时间和原文件的时间不同,对吧?这个文件的时间是1969年8月吧?所以这个文件是刚才我们修改后的文件。下一步,我要将这个文件导出到我的桌面上,为了进一步分析。我们通过逆向分析来看这个文件,而不是从头开始分析。我们要先看一下它是如何被修改的,然后再判断我们应该怎么操作。接下来,我们有两款分析工具,我会介绍给大家。如果有需要的话,你们可以在公众号后台获取链接自己下载。这些方式都可行。
首先,我们要找到一个文件,然后重命名,因为我们的APK实际上就是一个压缩包。然后我们打开它,会发现里面有一些文件,这些都是字节文件,但我们的重点是要获取这个。我们将其解压到桌面上,然后重命名。然后我们可以看到一些文件,比如签名文件,资源文件,配置文件等。下面的是DX文件,用来打包我们所有的加密层代码。LC文件应该是配置文件。这里可能有些同学觉得有点难度,但是当我们把它改一下并开始分析时,你会觉得难度其实不是很高,因为它涉及到的只是EF文件的修改。接着,我们关闭这些文件,然后我们来看一下,修改后的文件和未修改的文件的对比。我们有两款工具可以使用,它们可以比较多种文件。我们可以把文件拖进来比较,然后我们会发现差异。红色的地方代表修改后的地方。我们可以看到,在修改后的文件中,有很多地方都有变化。
我们会发现,最后的时候,你看这个修改的文件,到这里就结束了,对吧?那么这个修改后的文件,你看它是怎样的,后面是不是多了很多东西了?这些东西是怎么来的呢?是因为我们已经修改了原先的EF文件,然后后面添加了一些相关的内容。大家来看一下,我们添加了一些相关的内容在哪里?大家会发现,这里整个so连接中,你会发现一个叫做COCO2 DISC CP的so,还有尼布哈喽的so,原先这个文件里面是没有尼布哈喽的so的,通过刚才我们看压缩文件也没有,那压缩文件里面就只有一个尼布,通过2DCP点数,然后现在我们修改后的文件里面就包含了我们注入的一个内部hello点数,从而我们通过这个分析比较也知道,这个数里面包含了这样一个文件,设注。
我们刚才的注入操作是成功的,然后上面这样,其实就是一些函数的,函数的名称。这里的话挪的比较快,上一个对比,它到这里了,刚才你会发现,他从这里就发生了改变了,就发生改变。都是这些地方都是改变后的。好,下面我们来看这两个文件的区别,我们已经看了,那么我们会发现它修改了很多一些关键的地方。比如我们前面会发现,有一部分数据的话,前面像这样些数据的话,明显修改的是EF文件头饰版,那么中间这部分的话,它还有一部分修改,是吧?修改这部分数据应该修改的是EF,是吧?断头表,是吧?整个什么EF文件的一个断头表,也就是他程序投表。当然,大家会发现,他修改的地方还是不是很多,是吧?修改地方不是很多。修改最多的地方是在后面,这部分内容的修改。然后添加这样一个连接,是整个什么EF文件静态感染。注入了核心代码,核心功能,它的一个实现,无外乎就是要把我们要注入的这样一个送模块添加进去,添加到这个什么送里面,你不扣2的CP点送里面去。
下面我们来看,它的一个差异,我们让它只显示差异,大家就会发现了,那整个差异就只有这一部分,然后相同的话,相对来说这个工具啊好用一点,但是有时候比较的话,准确性的话,有一个工具的准确性还要更高一点,给大家介绍一下。大家给自己去下一下,HXM这个也比较专用,用来比较什么二进制文件的,也就是我们的16进制文件。这刚才大家看到了,这些都是什么?都是二进制文件,只不过他以16进制来进行表示,大家就这里的话理解一下。我们看一下,大家会发现,他修改的地方是不是一样的,给大家验出来了,是吧?一样的给大家捏出来了。不过他的修改的话,就没有像刚才那种看着很方便,不过它准确性呢,高一点。当然当然,这里大家会发现一样的,最后它还是在尼布QQ二G CV点搜的后面添加了一个字符串,尼布什么hello点搜索这样一个字符串。好,这就是我们刚才分析,那之后我们得出一个结论,他修改了一些关键的地方。
大家会发现,下面这里就是我们刚才说的断头表。因为这个命令我还要用到,下面我们紧接着来看,这一部分就是断头表。它要修改两部分内容,又要修改断头表和我们的EF文件头。那么截头表的话我们就不管,大家也会也可以发泄是吧。他这个是从什么节道段的一个映射,从节道段的一个映射关系。大家也可以看一下从节道段的一个映射关系。我把它拉长一点,方便大家看。是不是大家这样就好看很多,下面的话断头表是干啥用的?断头表是EF文件结构里面的一张表,是不是也就整个EF文件的话,它可我们可以把它细分为一些结构,是吧?那启动的断头表的话,它就把就是程序动态的一个执行流程,也就是说执行的时候加载了加...具体是吧,程序执行了去加载的时候,他不是去加载这样一些节,他是加载这样一些段,也就他把节分成什么若干个段,然后去进行加载。大家会发现,这里面有比较特殊的两个LID段,是LID段这个段,大家会发现它有202横,应该是01和02,是不两个部分。
当然会发现0102这两个部分里面,是不是有很多的这样一些结,是不是这些结就把它划分为一个段,到时候去加载的时候它是动态执行的时候是加载这样些段,然后我们静态分析的时候就可以分析这样一些节式,也就是说一个是静态的,一个是动态的,段式就是静态,就是动态的,节就是什么静态的。这涉及到一个执行的一个过程,然后大家还要去,修改EF文件的话,那么这个EF文件结构是大家必须会的一个内容。然后这里的话再往下走的话就比较深入了,那我们就不继续往下深入去讲。然后我这里直接告诉大家给大家说一下有哪些文件可能会被我们修改,这个文件当中我要修改文件图的哪些地方,我要修改文件头的这里。首先大家会看见这里全都是英文,大家要有耐心,我会给大家讲这个,每个这个每个段对应的信息,每个字段对应的信息。
首先我们来观察一下,前面的内容的话都不介绍了,TF4543这就是一个魔术,后面就是魔术,它标志的就是这个文件是TF,就是EF文件,然后我们重点来关注一下,这里有这样一个内容,是不是这个段,是不是段的一个起始偏移地址,首先我们呢修改段的一个起始偏移地址。那么这个地方是不是也就是我们要修改的地方,研究修改EF文件头,我要修改几个地方,大家会发现,我们要修改这里,这里的话大家自己下去什么总结,是不是往这里的话就比较快了,那除了修改这个方外,大家会发现它是52,一会我们会看修改后的这个值,它会发生改变,它不再是52了,一会我们来看它,是看他们之间的一个区别。
我们紧接着这个工具的话,就可以把相关的一些数据都给大家展示出来,然后我们第二个文件,就是我们修改后的文件,这期教程的话没有重点跟大家说,他是如何去实现的,因为说实现的话就比较复杂,我们先来看一下我们能够修改哪些地方,然后具体怎么去修改,一会我们再讲。这里大家有疑问的地方可以提出来,而且大家坚持一下,坚持看完之后,大家相信,大家对EF文件结构应该是有个数,比没来听过的话肯定是有更深一步的理解。他们记得我们之前提到的,这两个文件已经发生了变化。首先,大家会注意到节没有发生变化,节仍然是2341964。下面这个单词"secdln"代表着节,就像我刚才提到的,如果你对英文不太熟悉,可以查一下。老师可能提到这两个单词的区别,因为在我们的开发中,我们通常只需要使用少量的单词。他们会注意到,文件发生了修改,这可以根据数据的差异来观察。
我们会看到他们修改了断头表的起始偏移地址,这些结构在加载和执行文件时非常重要。如何执行文件以及文件的组成方式都取决于这些结构。这些段决定了我们如何断构文件。接下来,我们会注意到除了那个之外,段的大小也发生了改变。"say"的大小变为了8,从之前的7。这意味着它的外观发生了变化。我们根据数据来分析,会发现他们修改了与此相关的一些数据。然后,我们会看到段的大小没有发生变化。我们来看一下他们具体修改了哪些地方。通过对比EF文件的这两个结构,我们发现他们最终只修改了一小部分内容。2023代表了节的表象,表明了有23个节。然后,我们来看段有什么区别。现在大家都应该知道他们修改了哪些地方了吧,对哪些地方进行了修改。下面我再把这个程序给复制一下,这个命令太长了。在后期,我还是需要配置一下环境,有时候这样更方便一点。然后我们再来看一下,首先我们还是打开那个未被修改后的,也就是修改之前的文件。
大家会发现,这里出现了一些相关的信息,是EF文件,文件的状态等。然后下面是一些相关的断头表信息和系统信息。大家会注意到它总共有几个段,刚才我们已经提到了,它有7个段。然后我们再来看修改后的文件,它有多少个段。大家会发现它多了一个段,现在有8个段。当然,这里我们可以看到,它最后添加了一个表象。除了之前的段之外,现在还添加了一个LED段。LED段是一个比较特殊的段,也就是说,LAD段是真正被加载到内存中的段,其他的段都没有被加载到内存中。所以,当我们看到这个新的LED段时,我们可以推断,它的添加导致了文件的段数量从7个增加到了8个。这也足以说明了他们的修改之处。此外,我们还会注意到,他们对某些地方进行了修改,比如01和02。
我们来看一下0102,变化不是很大。还有00和0001,这些地方都有所修改。需要注意的是,0001代表了第一个字段,PHD2代表了一种类型的段,描述了整个段头表的位置、大小和表象个数。这些信息都在PHD2这个段中描述。然后,关于LAD段,它是要加载的一部分文件,负责将相关数据加载到内存中。LED段之所以会被加载,涉及到了一个映射关系,这可能比较复杂,我们会在后期再详细讲解。现在我们已经了解了整个文件的一些区别和联系。如果有任何疑问,都可以随时提出来。有些同学可能对这个内容感到困难,特别是英文方面。但我相信大家都能坚持下去,因为这个内容可能比上期讲的更有挑战性。对英文不感冒或者有一点困难是很正常的,毕竟这是第一次接触到这些专业术语。通过之前的分析,我们已经知道了EF文件结构的解析,以及修改前后的比较,从而得出了需要修改的地方。我们知道他们要修改断头表和EF文件头这两部分内容。现在,我们不再去深入研究复杂的英文了。
标题:Android手游外挂开发教程07:静态感染ELF文件注入
链接:https://izhangwan.com/news/sypc/17063.html
版权:文章转载自网络,如有侵权,请联系删除!