Linux Kernel课第二次作业。 burningcodes  原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.什么是内核 计算机其实是由一堆硬件组装成的机器,计算机结构大致如下: Linux内核其实就是专门与硬件打交道的,它向下能与硬件交互,向上提供了系统调用接口,是连接应用和底层硬件必不可少的部分。我们平时使用的Linux操...

在上篇文章中(回顾点这)介绍了混淆的基本原理,但是那种方法实现的混淆Dex在安装的时候会报错: INSTALL_FAILED_DEXOPT 1 INSTALL_FAILED_DEXOPT 经过一段时间研究后在源码(/dalvik/libdex/DexSwapVerify.cpp)中找到答案: 在加载dex...

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

Linux内核课第一周作业。本文在ubuntu14的环境下进行实验 burningcodes 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.AT&T与Intel汇编 linux下gcc采用的是AT&T的汇编格式,而windows下都是采用Intel汇编格式,他们之间的差别主要如下: 寄存器命名: AT&T中寄存器名字前带%,如%eax,而inte...

用tcpdump可以很方便的在手机上抓包,数据线连上pc后,过程如下: 1.上传tcpdump 修改/data/local目录权限为777,然后把tcpdump放在该目录下 Shell adb push /home/xxx/tcpdump /data/local/tcpdump 1 adb push /home/xxx/tcpdump  /data/local/tcpdump 然后给tcpdump增加...

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语法。其中,第一个字母...

添加权限 <uses-permission android:name="android.permission.INTERNET" /> 1 <uses-permission android:name="android.permission.INTERNET" /> 主要代码 import java.io.ByteArrayInputStream; import java.i...

对于下面这句代码大家一定不陌生: ls > test.txt 1 ls > test.txt “ >” 将输出重定向至test.txt文件,但是为什么>能重定向输出,其中的原理又是什么呢?接下来就说说IO重定向。 1.描述符表(descriptor table)– 每个进程都有各自的表 file descriptor(fd)...

在IDA动态调试so库这篇文章中讲了基本的动态调试方法,但是这种方法有一个缺点,就是只能在进程运行起来之后才能attach上,也就是说这时进程已经将so库加载进内存并且已经执行完JNI_OnLoad,所以只需要在JNI_OnLoad函数中完成一些反调试措施,就无法使用上篇文章所介绍的方法来动态调试。这篇文章就介绍动态调试的另一种方法:直接在JNI_OnLoad函数上下断点。 另外,上...

1.ptrace系统调用 Linux下ptrace系统调用是进程调试中最重要的一个函数。许多调试器如gdb,IDA都是基于ptrace的调试器。接下来就来看看ptrace这个函数: ptrace头文件在: C #include<sys/ptrace.h> 1 #include<sys/ptrace.h> 函数原型为: C ...

前面几篇文章介绍了聊天室中使用到的模块,回顾看这:wxpython模块,asyncore模块,会使用这几个模块后,聊天室就很容易实现了,当然还有一些需要注意的地方在这篇文章会一一介绍。 1.服务器及客户端数据处理流程 Server接受客户端的连接,连接上之后为每一个客户端生成一个ChatSession,ChatSession负责与客户端进行原始数据的收发,当收到原始数据后,ChatSession将数据丢给Ro...

+
跳转到评论