自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 2、LoadClass类加载过程

1、前言上一篇说道,DexClassLoader加载一个dex文件的过程,DexClassLoade加载dex文件过程,我们加载一个自定义类或者dex文件的时候,下面是一个典型的例子DexClassLoader dexClassLoader = new DexClassLoader("/sdcard/Dex.dex",optfile.getAbsolutePath(), libfile.getAbsolutePath(), MainActivity.class.getClassLoader());Cl

2021-06-16 23:20:52 478

原创 1、DexClassLoader的初始化过程

前言:最近在研究安卓的加壳和脱壳,发现遇到知识盲区,是以前的windows研究的时候好多没遇到的,为了更好的研究安卓逆向,要从底层开始研究安卓的源代码1、前言我们使用安卓加载一个类的时候,经常使用DexClassLoader来加载一个特定目录的dex文件,这个过程是什么样的下面是使用的例子DexClassLoader dexClassLoader = new DexClassLoader("/sdcard/Dex.dex",optfile.getAbsolutePath(), libfile.getA

2021-06-16 20:21:58 365

原创 32位windows的全局hook

1、思路:整理以前的代码,顺便写个帖子。该方法是利用驱动构建调用门和中断门,然后利用调用门修改页相关dll的页属性,再利用中断门来hook相关的函数。当然也有更简单的方法,此方法是利用调用门和中断门的使用,当然64位下是行不通的,会触发pg。64需要切换gs,(x86是fs寄存器只想teb和kprcb)2、驱动#include <ntifs.h>#include <ntddk.h>#include <stdio.h>#define DEVICENAME L"\

2021-03-07 22:40:30 715

原创 Windows TerminateThread终止线程过程(从3环到0环)

2020-12-04 15:46:01 496

原创 windows SuspendThread函数线程挂起过程(从三环到0环)

2020-12-04 15:45:04 495

原创 windows内核之用户APC执行流程图(KiInitializeUserApc)

2020-12-02 17:11:13 491

原创 windows内核之内核APC执行过程(KiDeliverApc)

2020-12-01 17:12:59 447

原创 C++进阶教程之继承得本质:单继承(一)

单继承到底发生了什么托更了C++得高级教程好久了,今天有空先来更新一章C++得单继承。通过汇编来了解一下C++得继承得本质到底是什么,为啥说子类可以访问父类得非私有成员,而父类却不能访问子类得成员。首先让我们看一下结构体和类到底有什么区别。大家都知道C语言中有结构体,C++有类,通过前面两章,大家应该知道了类和结构体没有什么本质得区别。可以说类就是被编译器限制了权限得结构体,那么单继承发生了什么呢。1、首先让我们看一个结构father*其反汇编大家应该很清楚,就是在内存中依次存下了1,2,3。

2020-11-30 20:46:38 287

原创 windows内核学习之APC队列得插入过程

2020-11-30 19:59:36 257

原创 windows内核 之线程准备KiReadyThead

2020-11-24 12:37:45 112

原创 一个PE注入,加壳的小工具

本人最近无聊,写了一个入门级的PE的小工具,包括PE解析,最简单的软件加壳功能,代码注入等功能。供学习交流1、加壳功能2、代码注入PE查看源码自取哦:链接:https://pan.baidu.com/s/1XSE1qQ6jKw9BRwJCOP_Sbg提取码:9niy...

2020-09-08 16:51:13 1192

原创 C++进阶教程之this指针的本质(二)

1、this指针?**摘抄自百度百科:**一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。其中难点: (1)一个对象的this指针并不是对象本身的一部分,为啥this指针不是对象的一部分。(2)不会影响sizeof(对象)的结果,为啥对象里都有this指针了,按理说会占用4个字节(32位程序),却不占用空间。(3)this作用域是在类内

2020-08-24 22:13:42 276

原创 C++进阶教程之类的本质(一)

1、C语言Struct结构体与Class存储结构#include <iostream>struct A { int a = 1; int b = 2; char c = 3;};class B { int a = 1; int b = 2; char c = 3;};int main(){ A structA; B ClassA; printf("%x, %x", &structA, &am

2020-08-23 22:02:47 238

原创 PE 之导入表解析和注入

1、导入表导入表是在可选PE头得数据目录项得第二项其结构如下其中name是一个RVA,是DLL的名字OriginalFirstThunk指向INT表,为 IMAGE_THUNK_DATA32的结构。这个结构的值中如果最高位为1 ,那么除去最高位的值函数的导出序号,否则为指向IMAGE_IMPORT_BY_NAME的RVA其结构如下其中Hint值无关紧要。** FirstThunk** 指向的是IAT表,其内容结构与OriginalFirstThunk指向的INT表一模一样2、程序启动

2020-08-19 17:24:05 710

原创 PE之移动导出表

1、移动各种表的目的(1)在程序启动时,系统会根据导入导出表等进行初始化工作。为了保护程序,一般会对exe程序的二进制进行加密等工作,但是一旦将这些表也进行了加密,那么系统在初始化的时候没办法找到这些表,也无法启动程序。(2)在对程序加密之前,需要对一些关键的表进行移动后,再对原来的数据进行加密,这样才不能破坏原来的程序。(3)学会移动各种表,是对程序加密/破解的基础。2、如何移动导出表上一篇文章,提到了如何对导出表进行解析,导出表的结构如图下。导出表的位置是在可选PE头的第一项,如图,我们可

2020-08-18 15:16:46 703

原创 PE重定位表解析

1、重定位表的作用在模块被加载到内存中,如果该模块没有装载到期待的位置,里面以固定形式而不是以偏移形式硬编码的地址就需要修正,这样程序才能被正确加载。例如:CALL 401203。这个在编译器编译的时候将CALL后面的函数地址以硬编码的形式固定住,那么一旦模块不是被加载到40000的基址,而是被加载到100000,则这条函数调用指令就不能正确找到函数,这时候就需要修正这个401203为1001203才可以。这就需要重定位表了2、重定位表的位置可选PE头中数据目录项的第6个结构就是重定位表。注意:

2020-08-17 20:57:37 1025

原创 PE文件导出表解析

1、导出表的结构导出表是option可选PE头的数据目录项的第一个,数据目录项的结构如下其中VirtualAddress 在内存中的偏移,Size为大小。可以通过数据目录项找到RVA(内存偏移),然后转换到FOA(文件偏移),来定位导出表2、函数地址定位过程其中需要注意的点是:1、AddressofName 为函数名称表的RVA,需要转为FOA,每个表存的为名字的RVA地址,也需要转为FOA。2、通过名称定位函数地址的过程如下:通过名字在名称表找到Ordinals表下标,然后通过下标在Or

2020-08-16 14:35:11 1028

原创 PE中增加节,并插入自己代码

PE文件的基础知识大家可以自行百度。1、在PE中末尾添加一个节在PE末尾中添加一个节,需要注意:(1)RVA和FOA的转换(2)需要修改SizeofImage的大小(3)需要修改PE头中节的数量(4)如果现有的节表后面添加的空间不足,可以移动NT头和节表(5)新增加节表的属性根据自己的需要修改(6)新增节的RVA 需要注意计算,需要计算上一个节RVA对齐后的尺寸计算公式如下: //计算内存中对齐的大小 DWORD VirtulaSize = NULL; if (secti

2020-08-15 15:47:08 1493

原创 PE代码注入

PE文件入口地址EntryPoint指向了PE文件开始执行的位置,关于PE文件的具体格式,大家可以自行百度。本代码主要实现了在32位可执行程序中注入了一个弹窗 。其主要原理是修改EntryPoint地址处的内容,指向自己代码的地方,然后执行完毕后,再跳转到原入口的地址。其中值得注意的几点:(1)需要关闭PE的地址随机化功能,可以通过修改OptionHeader头中的DllCharacteristics = 0x8100,来绕过地址随机化。(2)计算E8和E9的时候,CALL 偏移:跳转地址 = 当前

2020-08-15 09:40:33 1474

原创 window完整服务程序

windows服务控制程序#include <iostream>#include <Windows.h>BOOL DeleteSampleService(SC_HANDLE scSCManager, LPCWSTR szNameOfService);DWORD StopService(SC_HANDLE scSCManager, LPCWSTR ServiceName, BOOL fStopDependencies, DWORD dwTimeout);/*********

2020-07-31 15:03:54 345

IDA7.0 vc签名文件

自己合并的IDA 7.0的签名文件,包含vc_14.28.29910 x86和x64,windows_kit_10.0.19041.0 x84和x64 的签名文件

2021-04-07

向日葵远程控制软件,ubuntu64位ARM版本

该向日葵为arm架构的版本,支持ubuntu64,arm64位的cpu。原本是向日葵适配的国产麒麟操作系统,支持的arm版本,安装方法:打开控制台,进入到安装包目录, sudo dpkg -i 安装包名称。如果缺乏各种依赖,可以用sudo apt-get -f install来修复

2020-12-01

空空如也

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

TA关注的人

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