Windows逆向
文章平均质量分 91
怰月
控梦师、疗愈师、驱魔师、红队高级攻防工程师、擅长能量疗愈、高维驱魔、红蓝对抗、Web渗透,内网渗透,域渗透,无线渗透,二进制安全,Windows逆向,免杀-反杀毒技术,溯源反制,目前正在寻找机会中(欢迎头部安全公司和猎头私信哈)
展开
-
Windows逆向安全(一)之基础知识(十八)
通过比较指针传参和非指针传参得到了以下结论:无论是指针传参还是非指针传参,将参数传入函数内部后,只保证了参数的内容一致,但地址不同之所以指针传参能够实现修改函数外部值的效果,是因为传入的参数的值就是外部值的地址,传入的是个地址,通过修改同个地址里的值而达到了影响外部值的效果使用指针作为参数十分常见,因为通过这种方式就可以不用返回值,直接将要返回的数据保存在指针里即可。原创 2023-04-24 15:11:30 · 1169 阅读 · 3 评论 -
Windows逆向安全(一)之基础知识(十七)
可以看到指针数组其实并没有什么特别之处,只不过存储的数组成员的数据类型为指针而已指针数组的赋值也和先前对指针的赋值没有什么区别所谓结构体指针就是在结构体后加上若干个*使其称为一个指针类型结构体指针和普通的指针实际上并没有什么不同在对结构体成员进行操作时,需要先对其进行初始化(为每个结构体成员分配内存地址)结构体指针并不直接存储结构体成员,而是存储了指向结构体成员的地址,该地址里存放着所有结构体成员所谓数组指针,就是指向数组的指针(本质是指针)原创 2023-04-24 14:55:28 · 996 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(十六)
通过先前指针的学习,了解了指针和地址以及数据的关系,现在结合先前的知识继续学习巩固。原创 2023-04-22 10:13:04 · 1271 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(十五)
可以在变量前加上&符号来获取变量地址取地址返回的类型都为原本变量的类型后加个*,也就是个指针类型在一个指针类型的变量前面加上*符号,即可取出该地址里所存储的内容取地址数据返回的类型都为原本变量的类型后减个*,可以说是和&取地址正好相反对于多级指针,可以一次使用多个*来多次取地址中存储的数据。原创 2023-04-21 14:26:31 · 919 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(十四)
无论是什么类型,在其后面加上(无论加几个\都一样)后其数据宽度都变为4字节无论是指针的加亦或是减(这里只演示了加法,但减法同理),其加或减的单位为去掉一个*后的数据宽度也就是实际增减的数值=去掉一个*后的数据宽度 × 增减的数值指针之间的减法,其结果为相减后再除以去掉一个*后的数据宽度指针的数据宽度为4字节,或者说:无论是什么类型,在其后面加上(无论加几个\都一样)后其数据宽度都变为4字节指针数值支持进行加减,加减的结果=去掉一个*后的数据宽度 × 增减的数值。原创 2023-04-21 11:11:08 · 1094 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(十三)
通过上面的分析,发现此时(switch 中的case数量≤3时)的反汇编代码和if else并无本质上的区别,都是要依次比较判断条件此时的流程图为:前面的switch case中 case的数量只有3个,看起来和if else并无太大区别,接下来看看当case数量大于3时的情况通过上面的分析,发现此时(switch 中的case数量>3时)的反汇编代码和if else的差别就体现出来了。原创 2023-04-21 07:16:41 · 1639 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(十二)
C语言中的结构体是一种自定义的数据类型,一个结构体里可由其它各种类型组合而成。原创 2023-04-20 13:54:06 · 830 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(十一)
常量变量常量通过常量给定下标来寻址时 和 一维数组 一样,编译器可以直接通过下标来找到对应的数组成员地址。原创 2023-04-20 12:06:02 · 605 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(十)
数组的存储在内存中是连续存放的无论是数组还是基本类型的存储都需要以内存对齐的方式来存储数组的寻址方式大体可分为两种:直接通过下标找到对应的数组成员间接通过变量来找到数组成员:先找到数组的第一个成员,然后加上变量× 数据宽度得到数组成员数组越界可以覆盖函数原本的返回地址,以此来向函数中插入其它函数,但注意要平衡堆栈。原创 2023-04-20 06:26:10 · 1204 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(九)
众所周知,在C语言可以使用可以使用三种循环,分别是:while、do…while和for本文从汇编的角度出发,观察这三种循环的差异先贴出三种循环的代码,分别用这三种循环计算0+1+2+3+4+5+6+7+8+9(从0一直加到9)运行结果显然,这三种循环都能正确地计算出结果,接下来挨个分析这三种循环的汇编代码省去汇编代码中保护现场、提升堆栈、初始化堆栈、恢复现场和返回的代码,直接看代码的对应汇编头两行汇编对应将i和j初始化为0,没什么好说的接下来看循环语句部分:第一行为:对应for(i=0;i原创 2023-04-19 08:13:04 · 878 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(八)
不难发现,三个数求最大值,只需两两比较就可以得出结果分析if else的关键在于观察涉及的参数和jcc语句此案例中就是直接采取了cmp 外加 jle来进行分支的选择和跳转因为不符合条件的才要跳转走,所以在条件比较中,是大于的比较如i>j,所使用的汇编为jle 小于等于的比较。原创 2023-04-19 06:42:59 · 1152 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(七)
类型转换一般为由数据宽度小的转换成数据宽度大的,不然可能会有高位数据被截断的现象,引起数据丢失需要一个变量来存储一个数据,刚开始这个数据的数据宽度较小,后来发现存不下了,需要换一个数据宽度更大的变量来存储。原创 2023-04-19 06:25:22 · 917 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(六)
在提及全局变量和局部变量之前,需要先谈谈程序运行时在内存中的状态。原创 2023-03-20 03:34:34 · 418 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(五)
不同于寻常的C语言基本数据类型的学习,这里以汇编的形式来学习不同数据类型的存储方式和差异。原创 2023-03-20 03:14:37 · 614 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(四)
首先明确一点,这里所指的C语言程序入口为C语言的控制台程序的入口,和WIN32等其它类型的程序入口并不相同,主要为学习如何寻找程序入口首先我们都知道C语言的控制台程序中,我们都将代码写在了main函数里,但是这个main函数不过是我们编写代码的入口,而不是真正程序的入口,如何找寻真正的程序入口?在main函数的头部下断点,然后观察其堆栈的调用情况,通过前面的学习,我们知道在调用子函数即CALL XXXX后,会将要返回的地址压入堆栈中,我们可以通过这个返回地址来一层一层往上找到真正的程序入口。原创 2023-03-20 02:42:54 · 670 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(三)
前面我们通过分析反汇编分析了C语言,现在我们来探究如何在C语言里直接自写汇编函数这里就要引入C语言中裸函数的概念。原创 2023-03-20 02:27:14 · 527 阅读 · 1 评论 -
Windows逆向安全(一)之基础知识(二)
我们可以看到,即便一个空函数什么都没有做,但调用一个空函数所产生的汇编代码却不少保护现场、恢复现场以及堆栈平衡的检查等等都没少,可谓麻雀虽小五脏俱全。原创 2023-03-12 19:34:08 · 2719 阅读 · 0 评论 -
Windows逆向安全(一)之基础知识(一)
逆向是一种新型的思维模式也是软件开发领域中极为重要的技术,涵盖各种维度去深挖软件架构的本质和操作系统原理,学习逆向后可以在各领域中发挥至关重要的作用,其中包括黑灰色,安全开发,客户端安全,物联网,车联网,游戏安全,红队免杀等行业中绘制出更高的闪光点。原创 2023-03-10 18:24:01 · 3273 阅读 · 0 评论