自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jltxgcy的专栏

追求卓越,成功会在不经意间追上你。

  • 博客(22)
  • 资源 (13)
  • 收藏
  • 关注

原创 Linux内核源代码情景分析-nanosleep()和pause()

我们介绍nanosleep()和pause()两个系统调用。    系统调用nanosleep()在内核中的实现为sys_nanosleep(),代码如下:asmlinkage long sys_nanosleep(struct timespec *rqtp, struct timespec *rmtp)//第一个指针rqtp指向给定所需睡眠时间的数据结构;第二个指针rmtp,指向返回剩余时间的数

2015-03-22 12:54:45 2907

原创 Linux内核源代码情景分析-强制性调度

Linux内核中进程的强制性调度,也就是非自愿的、被动的、剥夺式的调度,主要是由时间引起的。前面讲过这种调度发生在中断,异常,系统调用从系统空间返回用户空间的前夕,也就是在ret_with_reschedule可以看出,此时是否真的调用schedule(),最终还要取决于当前进程task_struct结构中的need_resched是否为1(非0),因此,问题就结为当前进程的need_resche

2015-03-21 17:40:19 1305

原创 Linux内核源代码情景分析-exit()

执行完/bin/echo之后,会调动do_exit,销毁子进程:    我们还是先从系统调用exit()说起,先来看exit()的实现,进入到内核态执行sys_exit。asmlinkage long sys_exit(int error_code){ do_exit((error_code&0xff) 8);}NORET_TYPE void do_exit(long code){ st

2015-03-21 10:37:58 2529

原创 Linux内核源代码情景分析-execve()

子进程开始执行execve:    execve("/bin/echo", args, NULL});    系统调用execve内核入口是sys_execve,代码如下:asmlinkage int sys_execve(struct pt_regs regs){ int error; char * filename; filename = getname((char *) regs.

2015-03-20 19:25:52 4414

原创 Linux内核源代码情景分析-wait()、schedule()

父进程执行wait4,并调用schedule切换到子进程:    wait4(child, NULL, 0, NULL);    像其他系统调用一样,wait4()在内核中的入口是sys_wait4(),代码如下:asmlinkage long sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struct rusage * ru

2015-03-20 09:53:37 2010

原创 Linux内核源代码情景分析-fork()

父进程fork出子进程:    fork经过系统调用,来到了sys_fork,详细过程请参考Linux内核源代码情景分析-系统调用。asmlinkage int sys_fork(struct pt_regs regs){ return do_fork(SIGCHLD, regs.esp, &regs, 0);}int do_fork(unsigned long clone_flags, u

2015-03-20 08:21:55 2135

原创 Linux内核源代码情景分析-进程的创建,执行,等待,消亡

我们先看下面的程序:#include int main(){ int child; char *args[] = {"/bin/echo", "Hello", "World!", NULL}; if(!(child = fork())) { /* child */ execve("/bin/echo", args, NULL}); printf("I am back,

2015-03-20 08:21:43 1306

原创 Linux内核源代码情景分析-系统调用

一、系统调用初始化void __init trap_init(void){ ...... set_system_gate(SYSCALL_VECTOR,&system_call);//0x80 ......}    对0x80中断向量,设置了系统调用的总入口system_call。static void __init set_system_gate(unsigned in

2015-03-13 18:46:35 2045

原创 Linux内核源代码情景分析-异常

一、异常初始化    中断向量表的IDT的初始化void __init trap_init(void){#ifdef CONFIG_EISA if (isa_readl(0x0FFFD9) == 'E'+('I'<<8)+('S'<<16)+('A'<<24)) EISA_bus = 1;#endif set_trap_gate(0,÷_error); set_trap_gate

2015-03-13 09:31:55 1234

原创 Linux内核源代码情景分析-中断下半部(软中断)

Tasklet机制是一种较为特殊的软中断。Tasklet一词的原意是“小片任务”的意思,这里是指一小段可执行的代码,且通常以函数的形式出现。软中断向量HI_SOFTIRQ和TASKLET_SOFTIRQ均是用tasklet机制来实现的。      从某种程度上讲,tasklet机制是Linux内核对BH机制的一种扩展。在2.4内核引入了softirq机制后,原有的BH机制正是通过tasklet机制

2015-03-13 08:25:47 1272

原创 Linux内核源代码情景分析-中断上半部

一、中断初始化    1、中断向量表IDT的初始化void __init init_IRQ(void){ int i;#ifndef CONFIG_X86_VISWS_APIC init_ISA_irqs();#else init_VISWS_APIC_irqs();#endif /* * Cover the whole vector space, no vector can

2015-03-13 08:25:26 1848

原创 Linux内核源代码情景分析-系统调用mmap()

一个进程可以系统调用mmap(),将一个已打开文件的内容映射到它的用户空间,其用户界面为:    mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)。    参数fd代表着一个已打开文件,offset为文件中的起点,而start为映射到用户空间中的起始地址,length则为长度。还有两个参数prot

2015-03-09 09:13:36 4924 2

原创 Linux内核源代码情景分析-系统调用brk()

首先看下进程地址空间示意图:    我们简单的说,从低地址到高地址,代码区和数据区,空洞,堆栈区。    在Linux内核源代码情景分析-内存管理之用户堆栈的扩展,我们申请了从堆栈区往下,数据区上面的页面。    在Linux内核源代码情景分析-内存管理之用户页面的换入,我们申请了用于换入/换出的页面。    在本文中,我们申请的是从数据区往上,堆栈区下面的页面。    我们通过一个实例来分析,b

2015-03-09 08:33:51 7485

原创 Linux内核源代码情景分析-外部设备存储空间的地址映射

随着计算机技术的发展,人们发现单纯的I/O映射方式是不能满足要求的。此种方式只适合于早期的计算机技术,那时候一个外设通常都只有几个寄存器,通过这几个寄存器就可以完成对外设的所有操作了。而现在的情况却不大一样。例如,在PC机上可以插上一块图像卡,带有2MB的存储器,甚至还可能带有一块ROM,里面装有可执行代码。所以要将外设卡上的存储器映射到内存空间,实际上是虚拟空间的手段。在Linux内核中,这样的

2015-03-06 09:04:25 1550

原创 Linux内核源代码情景分析-内存管理之slab-分配与释放

首先说缓存区的数据结构:struct kmem_cache_s {/* 1) each alloc & free */ /* full, partial first, then free */ struct list_head slabs;//指向所有的slab块链表,前面是完全块,然后是非完全块,最后是空闲块 struct list_head *firstnotfull;//指向第一个非

2015-03-04 19:32:08 2320 1

原创 Linux内核源代码情景分析-内存管理之slab-回收

在上一篇文章Linux内核源代码情景分析-内存管理之slab-分配与释放,最后形成了如下图的结构:                                                                                                          图 1    我们看到空闲slab块占用的若干页面,不会自己释放;我们是通过kmem_ca

2015-03-04 19:31:59 1514

原创 Linux内核源代码情景分析-内存管理之恢复映射

refill_inactive_scan和swap_out,把活跃的页面变成不活跃脏的页面。挑选的原则是最近没有被访问,且age小于0。    page_launder,把不活跃脏的页面变成不活跃干净的页面。    不活跃脏的页面,有如下特点:    使用计数为1;    page->list链入mapping->dirty_pages/clean_pages;    page->next_has

2015-03-04 09:10:35 1099

原创 Linux内核源代码情景分析-内存管理之用户页面的定期换出

我们已经看到在分配ni

2015-03-02 18:01:43 2610

原创 Linux内核源代码情景分析-内存管理之用户页面的分配

首先介绍几个重要的数据结构。    1、pagetypedef struct page { struct list_head list; struct address_space *mapping; unsigned long index; struct page *next_hash; atomic_t count; unsigned long flags; /* atomic fl

2015-03-02 10:27:04 1354

原创 Linux内核源代码情景分析-内存管理之用户页面的换入

在下面几种情况下会发生,页面出错异常(也叫缺页中断):    1、相应的页面目录项或者页面表项为空,也就是该线性地址与物理地址的映射关系尚未建立,或者已经撤销。    2、相应的物理页面不在内存中。 本文讨论的就是这种情况。     3、指令中规定的访问方式与页面的权限不符,例如企图写一个“只读”的页面。    假设已经建立好了映射,但是页表项最后一位P为0,表示页面不在内存中;整个页表项如下图,

2015-03-01 17:06:13 2563

原创 Linux内核源代码情景分析-内存管理之用户堆栈的扩展

在下面几种情况下会发生,页面出错异常(也叫缺页中断):    1、相应的页面目录项或者页面表项为空,也就是该线性地址与物理地址的映射关系尚未建立,或者已经撤销。本文讨论的就是这种情况。    2、相应的物理页面不在内存中。    3、指令中规定的访问方式与页面的权限不符,例如企图写一个“只读”的页面。    首先看下进程地址空间示意图:

2015-03-01 12:10:36 1632

原创 Linux内核源代码情景分析-内存管理

用户空间的页面有下面几种:    1、普通的用户空间页面,包括进程的代码段、数据段、堆栈段、以及动态分配的“存储堆”。    2、通过系统调用mmap()映射到用户空间的已打开文件的内容。    3、进程间的共享内存区。    这些页面的的周转有两方面的意思。    1、页面的分配,使用,回收。如进程压栈时新申请的页面,这类页面不进行盘区交换,不使用时释放得以回收。    这部分通过一个场景来解释

2015-03-01 09:48:54 1337

SO hook技术汇总.pdf

SO hook技术汇总

2016-08-16

Android so加载深入分析.pdf

Android so加载深入分析

2016-08-14

NDKPLT.zip

csdn博客用的工程

2016-08-14

libPLTUtils.so

libPLTUtils.so,用于博客讲解。

2016-08-14

trace_anti_debug.zip

反调试

2016-08-13

Android Inline Hook原理图

Android Inline Hook原理图

2016-08-13

ARM Architecture Reference Manual

ARM Architecture Reference Manual

2016-08-13

压缩SDK demo

使用命令java -jar ApkCompress.jar -a CompressDemo.apk 出现错误提示对话框,我是在ubuntu下开发android,已经安装java虚拟机和eclipse,还有android sdk。 使用命令后会生成一个CompressDemo的文件夹里面放着所有的so,还有porting.log(大小为0)。

2014-08-01

CrackApk.zip

分析请见http://blog.csdn.net/jltxgcy/article/details/22670651

2014-03-31

AsyncTaskDemo

介绍了AsyncTask的使用,及源码分析。线程池,有返回值的线程。

2013-08-26

android_传智博客8天视频教程下载地址

android_传智博客8天视频教程。非常不错。

2013-06-28

android_豆瓣客户端_视频下载地址

android_豆瓣客户端_视频,传智博客主讲,很不错。

2013-06-28

android_jni_ndk视频下载地址

传智博客主讲,android jni ndk相关视频。百度网盘地址分享。

2013-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除