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

1.netfilter & iptables netfilter是Linux内核的一部分,可以看成是为上层处理数据包所提供的一种接口(本质是hook了数据包处理函数)。而iptables则是建立在netfilter之上的数据包过滤系统,通过简单的命令即可实现对数据包的过滤,也被称作Linux下的内置防火墙。 2.iptables中的表,链与规则 iptables中有十分重要的三个概念:table、chain、rules。他们三者的关系如下图: tabl...

burningcodes 原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.学习感受 经过这两个多月的Linux内核之旅,对Linux内核有了初步的认识。在这过程之中付出了很多,也收获了很多,尤其是写blog的方式,不仅能记录所学,还能加深对知识的理解。通过这门课,虽然只是认识了内核的很小一部分,但是最主要的是学会了学习源码的方...

现在市面上一些加固产商在对apk进行加固时基本上都加入了inotify反调试,这篇文章就讲解inotify的原理及如何用inotify来反调试。 1.inotify linux下inotify可以实现监控文件系统事件(打开,读写删除等),inotify最常见的api有以下几个: inotify_init:用于创建一个 inotify 实例的系统调用,并返回一个指向该实例的文件描述符。 inotify_add_watch:增加对文件或者目录的监控,并指定...

burningcodes 原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 在 从迷你型Linux内核理解进程调度的原理  一文中已经介绍过简化版的linux内核进程进程调度,这篇文章将深入linux源码进一步分析linux进程调度的原理。 1.进程调度的时机 进程调度主要有以下几个时机: 中断处理过程中:中断处理包括时钟中断、I/O中断、系...

burningcodes  原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.elf文件格式 目标文件主要分为三种类型: 可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。 可执行文件(Executable File) 包含适合于执行的一个程序。 共享目标文件(Shared Object Fi...

burningcodes  原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.进程管理中的关键数据结构 在进程管理中用到了几个关键的数据结构,这里先给出关键结构间的大致关系: 最主要的是三个数据结构: thread_union(linux-3.18.6/include/linux/sched.h#2241) thread_info(linux-3.18.6/arch/x86/include/asm/thread_info...

burningcodes  原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 上一篇文章中分析了系统调用的基本原理,通过跟踪源码将应用层系统调用和内核层的系统调用联系在了一起,回顾点这: 理解系统调用的原理(一)。 这篇文章在上文的基础上主要解决两个问题: 进一步分析system_call中做了哪些操作 中断处理与系统调用的区别和...

burningcodes 中科大软件学院 原创内容转载请注明出处 1.什么是RPC RPC(Remote Procedure Call,远程过程调用)是由 James White(1976) 提出的一种编程方式,现在已经广泛用在各种网络应用(比如分布式计算等)中。RPC允许客户端应用程序通过一些函数调用来实现一些功能,但是这些函数的实现是在远程服务器上,客户端发起请求,服务器端返回结果,看起来就像一个本地调用。...

burningcodes  原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.参数传递 系统调用也需要参数,但是它在内核态下的参数传递方式和用户态下不太一样,不是通过栈而是通过寄存器来存放参数(在64位系统中用户程序的参数也变为用寄存器存放),若参数个数不超过6个可以使用ebx, ecx,edx,esi,edi,ebp来存放(eax中存放系...

+
跳转到评论