echo1是linux64下的溢出题。IDA逆出来的main函数: C int __cdecl main(int argc, const char **argv, const char **envp) { int *v3; // rsi@1 void *v4; // rax@1 int v6; // [sp+Ch] [bp-24h]@1 _QWORD v7[4]; // [sp+10h] [bp-20h]@1 setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 1, 0LL); o = mallo...

上篇文章介绍了so加壳需要了解的elf文件格式回顾点我,这篇将介绍so加壳的原理,并且给出python版源码。 1.加壳原理 本加固方案实现对特定section进行整体加密。对特定section进行整体加密需要解决以下几个问题: 如何找到特定的section 使用什么方法加密 是否可以简化解密操作 读过上一篇blog的话,第一个问题就很简单了。只要读取每个section的名字与要被加密的section名比较即可;第...

1.SO加固系列 dex加壳是保护APK的一种方式,然而只有dex加壳会影响APK的加载速度,另外通过内存dump也能轻易还原出原dex,在专业的加固方案中除了dex加壳还能经常见到对SO的保护,本系列文章将介绍基本的SO加固方案。本文是SO加固系列的第一篇,主要介绍SO加固时所需要用到的ELF中Section的相关知识。 2.ELF中的Section ELF文件格式具体有三种类型: 可重定位...

1.Dex混淆原理 Dex文件中以类为核心,方法字段等数据都需要归属于某个类,所以在混淆时主要针对3类数据: 类名 类中的方法名 类中的字段名 为了更好的理解Dex文件中的类,先让我们看看类数据之间的关系图: 对于每个类而言,都有一个class_def_item结构体,其中class_idx指明了这个类的类名,superclass_idx指明了这个类的父类,在这个class_def_item结构体中最重要的就是class_dat...

1.ARP欺骗攻击 局域网内的主机,路由器等都通过MAC地址来相互建立连接。每台PC都有一张ARP缓存表,主机将一些常用的MAC地址记录在表中,这样就不需要每次都使用ARP协议查找MAC地址。当一台主机在访问外网时(比如访问baidu),这台主机会在ARP缓存表中查找网关MAC,然后将要发送的数据包的数据链路层的目的MAC地址填入网关的MAC,然后将其发送。而主机一...

scapy是python中一个非常强大的网络数据包处理模块,它可以轻松的构建各类数据包,这篇文章将对收发常见数据包做一个总结。官方文档在这。 1.收发数据包函数 scapy模块中有好几个收发数据包的函数,他们能完成不同的功能: send()  只发送而不接收数据包,并且网络层之下的都默认处理好了,只需传给它网络层之上(包括网络层)的参数即可 sendp()  只发送不接收,并且数据链路层之下的...

这个解析器可以读取dex文件中的各个数据,比如string,field,method,class等。通过写这个解析器对dex文件格式有了比较清晰的认识,也算是为以后学习dex文件的混淆和加壳做准备把。 Python import struct import binascii import hashlib import zlib class DexFile: def __init__(self,filepath): self.dex = open(filepath,"r") ...

Dex文件中最重要的就是各个class了,method tale,field table,string table这些的存在都是为了class服务的,每个方法和字段最终都要归属与某个具体的类,它们之间的关系大致如下: header中的class_def_off指向了第一个类的class item,所有类的item都可以由class_def_off加上一个偏移获得,每个item中有8项,共32bytes,指明了这个类的名字,权限,类数据等,其中class_data_off指出...

Checksum Dex文件头中的checksum是用来校验文件的完整性,使用adler32算法。在python中的zlib库中有该算法: Python import zlib 1 import zlib checksum计算dex文件中checksum字段之后(12字节之后)的数据,主要代码如下: def CalChecksum...

Proto table中每一项占12个字节,每一项包括3个元素: shorty_idx(uint):函数原型(函数类型的简写),指向string table的索引 return_type_idx(uint):返回类型,指向type table的索引 parameters_off(uint):指向这个函数的参数列表(如果这个字段为0表示这个函数没有参数) shorty_idx 这个字段的内容是函数原型的简写形式,它遵循ShortyDescriptor语法。其中,第一个字母...

+
跳转到评论