自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 C++类型转化表达式小结

const_cast根据http://www.cplusplus.com的说法,const_cast用于对象指针或引用的const的添加和删除操作例子如下:// const_cast#include <iostream>using namespace std;void print (char * str){ cout << str << '\n';}int main () { con

2017-09-14 18:18:33 361

原创 clang——CFG构成与生成(一)

CFGElement CFGBlock的最基本元素enum Kind { // main kind Statement, Initializer, NewAllocator, // dtor kind AutomaticObjectDtor, DeleteDtor, BaseDtor, MemberDtor, Tempo

2017-09-03 15:38:15 4231 1

转载 mysql中使用正则表达式查询

基本形式属性名 regexp ‘匹配方式’正则表达式的模式字符^ 匹配字符开始的部分eg1:  从info表name字段中查询以L开头的记录       select * from info where name regexp '^L';eg2:  从info表name字段中查询以aaa开头的记录       select * from in

2016-10-18 15:26:01 510

原创 补坑计划——ARM(二)

主要记录一下今天遇到的关于B指令和相对地址偏移的问题B跳转指令是一个相对跳转指令最高处4为(28~31)为条件码,后4位(24~27)“1010”表示B跳转,“1011”表示BL跳转剩下24位(0~23)表示相对偏移地址,偏移地址是这样计算的:先将24位补充为32位,然后左移两位,再与PC寄存器的相加,保存到PC寄存器计算公式如下(srcAddr + 8) + (x

2016-10-12 21:21:58 454

转载 ATPCS(ARM-Thumb Procedure Call Standard)概述

为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则.ATPCS就是ARM程序和THUMB程序中子程序调用的基本规则...一.ATPCS概述...     ATPCS规定了一些子程序之间调用的基本规则.这些基本规则包括子程序调用过程中寄存器的使用规则,数据栈的使用规则,参数的传递规则.为适应一些特定 的需要,对这些基本的调用规则进行一些修改得到

2016-10-10 13:51:50 627

原创 补坑计划——ARM(一)

开始进入移动安全这个坑的时候,并没有好好看ARM汇编。依靠x86的基础和ARM手册,各种博客上零星的知识点外加搜索引擎也就这么过来了。最近想稍微抽空重新过一遍ARM汇编,查漏补缺,或者应该算女娲补天。。。处理器工作模式用户模式(usr):正常的程序执行状态快速中断模式(fiq):用于高速数据传输或者通道处理外部中断模式(irq):用于通用的中断处理管理模式(svc):保

2016-09-28 00:21:49 374

原创 ActivityManagerService启动过程

上篇在ServerThread.run函数中启动注册核心server,这当中就包括AMS Slog.i(TAG, "Activity Manager"); context = ActivityManagerService.main(factoryTest); ... ... ... ActivityMa

2016-09-25 17:38:37 375

原创 Dalvik学习笔记——Zygote启动

这张图简单说明了Zygote的启动过程下面重点解析这些函数,从app_process.main开始int main(int argc, char* const argv[]){ ... // These are global variables in ProcessState.cpp mArgC = argc; mArgV = argv; mA

2016-09-17 21:49:26 720

原创 Dalvik学习笔记--运行过程

在AndroidRuntime.start函数中,在经过startVm和startReg两个函数对Dalvik虚拟机实例初始化之后(启动过程)会执行如下代码 if (startClass == NULL) { ALOGE("JavaVM unable to locate class '%s'\n", slashClassName); /* keep

2016-09-12 00:28:03 775

原创 ARP攻击原理与实践

ARP:Address Resolution Protocol 地址解析协议。它是一个链路层的协议。工作在OSI模型的第二层。由于以太网交换设备不能直接识别32位的IP地址。事实上它们都是以48位的MAC地址传输数据的,所以在工作时需要存在一种MAC地址和IP地址的对应关系。而ARP协议就是用来确定这种关系的。网络中所有的机器都包含ARP缓存,它存储了本地网络中最近时间的MAC地址

2016-09-01 00:13:44 2423 2

转载 Python:渗透测试开源项目【源码值得精读】

sql注入工具:sqlmapDNS安全监测:DNSRecon暴力破解测试工具:patatorXSS漏洞利用工具:XSSerWeb服务器压力测试工具:HULKSSL安全扫描器:SSLyze网络Scapy: send, sniff and dissect and forge network packets. Usable interactively or as a libr

2016-08-31 17:32:47 1748

原创 Androguard的部分源码(一)——androaxml.py

废话少说,上代码。option_0 = { 'name' : ('-i', '--input'), 'help' : 'filename input (APK or android\'s binary xml)', 'nargs' : 1 }option_1 = { 'name' : ('-o', '--output'), 'help' : 'filename output of t

2016-08-31 17:05:13 1064

原创 反编译编译后的AndroidManifest

反编译AndroidManifest.xml是反编译APK的核心工作之一。而且往往很多应用为了防御apktool的反编译,会采取一些防御性的手段,比如修改AndroidManifest.xml的文件头,导致反编译出错。结合AXMLPrinte的源码以及http://blog.csdn.net/jiangwei0910410003/article/details/50568487自己

2016-08-25 00:28:04 3339

原创 Android dex加载过程分析

啊啊啊啊啊啊啊,开始吧。ClassLoader有两种,PathClassLoader和DexClassLoaderpublic class DexClassLoader extends BaseDexClassLoader { public DexClassLoader(String dexPath, String optimizedDirectory,

2016-08-10 22:30:26 6215

原创 Android应用优化过程分析

最近在看其他的源代码,Android的源码几天没看了。假期的计划总赶不上变化,尴尬。。。接着Android应用的安装,看看优化(odex)的过程源码

2016-08-02 22:55:12 1381

原创 Android应用安装过程分析(二)

上回说道pm.installExistingPackage()和pm.installPackageWithVerificationAndEncryption()这两个方法。而pm是一个

2016-07-28 23:07:26 1048

原创 Dalvik学习笔记--启动过程

学习老罗的博客,顺便记点笔记,强化记忆代码用的4.3,与老罗不一样的地方会标注出来从AndroidRuntime.start开始void AndroidRuntime::start(const char* className, const char* options){ ...... /* start the virtual machine */ JNIEnv*

2016-07-26 23:41:15 731

原创 dex与odex的比较实验

有关odex文件结构请看我leader的博客http://blog.csdn.net/roland_sun/article/details/47183119非虫的白皮书也有详细的讲解。总之odex文件从0x28开始包含一个完整的dex文件,与原来的dex略有不同。下面具体比较一下从odex当中dump下来的dex有何不同dey.036开头,这是一份样本中获得的odex文件,

2016-07-25 22:34:06 4986

原创 Android应用安装过程分析(一)

手头上只有Android4.3的源代码,凑活着看,过程都大差不差,哪里写的不对的希望看到的大神指出。Android应用安全有四种方式:1.通过SD卡里的APK文件安装2.网络下载应用安装,通过market应用完成,没有安装界面3.ADB工具安装,没有安装界面。4.系统应用安装,开机时完成。先看SD卡中APK文件安装源码路径:android/packages/apps

2016-07-21 00:33:03 1688

原创 实例解读AndroidManifest.xml

随手找了一份文件进行解读内容如下

2016-07-13 00:15:39 5542

原创 看开源代码如何解析ELF文件

工具ROPgadget在ROPgadget中有识别并分析多种文件结构,这次主要用这个功能来分析ELF文件格式。分析的文件为libc.so上代码class Binary: def __init__(self, options): self.__fileName = options.binary self.__rawBinary = None

2016-06-19 00:54:19 3437

原创 进程间的通信(三)

看了看之后的内容,信号量和共享内存。这两个都不太熟,算不上再次。相对共享内存熟悉一点,从它开始吧。void *mmap(void *addr, size_t len, int prot, int flag, int fd, off_t offset);mmap函数将一个文件或者一个Posix共享内存区对象映射到调用进程的地址空间addr指定被映射到的进程空间的起始地址(非强制状

2016-06-07 23:20:06 318

翻译 Own your Android! Yet Another Universal Root(二)

利用目标直到现在我们已经看出这是一个典型的UAF漏洞并且一个位于用户空间迷途的文件描述符指向内核中的PING 套接字可以被攻击者获得。接下来我们要填充套接字对象,重新使用这个对象。之后我们可以执行内核中任意代码,最终完成Android设备的提权。实际上,我们使用套接字对象的close函数。当close(sockfd)调用时,内核最终会进入如下代码int inet_relea

2016-06-07 00:22:31 1481

原创 重新审视进程间的通信(二)

在UNIX网络编程中有关消息队列的内容分两章,一章Posix标准,一章System V(包括之后的内容都是)。先看System V。

2016-06-05 23:04:04 342

转载 在LINUX下的进程资源的限制(STRUCT RLIMIT)

在Linux系统中,Resouce limit指在一个进程的执行过程中,它所能得到的资源的限制,比如进程的core file的最大值,虚拟内存的最大值等。Resouce limit的大小可以直接影响进程的执行状况。其有两个最重要的概念:soft limit 和 hard limit。struct rlimit {rlim_t rlim_cur;rlim_t rlim_max

2016-06-02 10:42:46 813

原创 一些Android sys_call_table获取的方法

前天为这个问题纠结好久,搜索了好多方法,成功的不多。这里记下前天用的在su的情况下,用su权限执行echo 0 > /proc/sys/kernel/kptr_restrictcat  /proc/kallsyms | grep sys_call_table Android4.4之前的版本可以如下获取unsigned long* get_vector_swi_addr(){

2016-06-01 00:30:43 1860 1

原创 重新审视进程间的通信(一)

最近干活的时候又被Linux管道和消息队列搞的一脸懵逼。当初自己走马观花似的学习以为内容很简单,结果留下了大坑,借来Unix网络编程来补补,重新审视这两个部分,并且引以为戒!!!首先看管道#includeint pipe(int fd[2]);返回:成功为0,出错为1,两个文件描述符fd[0]用来读,fd[1]用来写灵魂作图

2016-06-01 00:15:07 1486

原创 红黑树的实现

红黑树性质(1)每个节点非黑及红(2)根是黑色(3)每一片叶子是黑色(4)若一节点为红,则其孩子为黑色(5)对每个节点,所以从该节点到后代叶子的路径含有同样多的黑色节点插入一个节点的时间复杂度O(lgn)删除一个节点的时间复杂度O(lgn)RBTree.htypedef enum {RED, BLACK} Color;typedef struct RBNode

2016-05-29 00:55:21 384

原创 SLAB分配器小结

在遇到类似于越界溢出、迷途指针这些漏洞时,一般会对内存进行覆盖(比如喷堆),无论哪种重写方式,无疑都需要了解内存分配器的工作方式。在进行了阅读,源码的分析,包括很多博文的帮助下大概摸清了SLAB分配器的脉络。SLAB分配器主要的作用是针对常用的对象,以链表的方式缓存它们,缓存的链表会连续的存放,这样频繁地分配和回收就不会导致内存碎片,此外对于很多初始化的对象(如互斥锁)内存回收后仍保持初始化的

2016-05-28 01:04:32 678

原创 简单分析CVE-2015-1805

CVE-2015-1805这个安全漏洞的年限已久,几年前就在upstream Linux内核中被发现,并于2014年4月被修复。但不幸的是,并没有修补完全,直到今年二月C0RE小组告知谷歌该漏洞可以被用于攻击Android操作系统。漏洞介绍:在linux 内核3.16版本之前的fs/pipe.c当中,由于pipe_read和pipe_write没有考虑到拷贝过程中数据没有同步的一些临界

2016-05-28 00:07:18 2021

翻译 Own your Android! Yet Another Universal Root(一)

CVE-2015-3636漏洞是一个典型的UAF(use-after-free)漏洞,被广泛用于Android设备的提权。这个漏洞虽然出来已久,但是仍然很有学习价值。它是第一个已知的可应用与Android64位设备的提权漏洞,作为一个内核漏洞,不依赖于Android设备。对于初学者来说是极好的学习Android系统安全和root的例子。虽然网上也有一些分析,但是大多数只有一个大概的漏洞成因或思

2016-05-27 00:08:47 891

原创 从extern说开去(一)

extern符号的主要目的是为了实现C++对C语言的正确调用,在C++中完美兼容C。 extern “C”的含义主要包含两个方面: (1)extern关键字表明函数和全局变量的作用范围。从链接的角度看,意味着在编译期间会以约定的方式表示引用的在其他模块中有extern声明的函数或变量,等到链接时再重定位,进行地址修正(绝对地址修正和相对地址修正)。与之相对应是static,用static声明后的函

2016-05-26 23:11:44 462

原创 C#中通过Process运行Python脚本

public void set_Python_Argv() { IFeatureLayer pFeatureLayer = (IFeatureLayer)m_pLayer; IDataLayer dl = (IDataLayer)m_pLayer; IWorkspaceName ws = ((IDatasetName)(dl.DataSourceName)).WorkspaceName; stri

2015-12-30 10:47:47 2969

原创 C++ Template 模版中的名称(笔记)

1、名称查找受限名称的名称查找在作用域内部进行,不考虑它的外围作用于(但是如果作用域是类,查找范围可以是它的基类)。非受限名称可以由内至外在所有外围类中查找。先查找该类和基类,然后查找外围类的作用域,也成为普通查找(含有ADL)。ADL(argument-dependent lookup)依赖于参数的查找,如果名称后面的括号里有一个或多个实参表达式,那么将查找这些实参的asso

2015-10-13 00:10:36 665

原创 C++ Template 实践草稿(two)

没有

2015-10-12 16:43:59 415

原创 C++ Template 实践草稿

并没有摘要!!!

2015-10-10 17:00:00 399

原创 Cocos2d-x源码啃食第一谈

第一篇博客,先鼓个掌纪念一下,啪啪啪啪。。。正文开始。从 CCRef.h 开始

2015-10-10 10:25:48 755

空空如也

空空如也

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

TA关注的人

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