- 博客(44)
- 收藏
- 关注
原创 Linux下通用型shellcode的编写
通过对本实验执行过程的理解,认真分析总结,能够独立的在 Linux 下进行 shellcode 的编写。
2024-12-27 09:08:49
1197
原创 在python中实现接收发送——接收邮件的功能
总的来说,发送方的客户端代码通过 SMTP 协议与 QQ 邮箱的 SMTP 服务器建立连接,并在服务器进行身份验证后,使用服务器来发送邮件。SMTP 服务器负责将邮件传递到接收方的邮箱。主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。python支持内置对SMTP协议的支持,具体模块有smtplib和email,需要的是qq邮箱SMTP服务器。
2024-03-25 20:49:28
496
原创 CSAPP深入理解计算机系统——链接(前50%)
本文记录学习深入理解计算机xitong (csapp)的过程,本篇文章记录前50%关于链接部分的知识,之后的等待后续实践后再更新~,如果有错漏之处,欢迎大家指出~~
2023-12-18 21:36:10
1416
原创 内存分区模型
一般由程序员分配释放(动态内存申请和释放),若程序员没有手动释放,在程序结束时空间由操作系统回收。程序编译后 ,生成了exe可执行程序,未执行该程序之前分为两个区域。不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。代码区是共享的,针对频繁执行的程序, 提高内存使用效率。代码区是只读的,防止指令被意外修改,导致程序功能的改变。由编译器自动分配和释放,存放函数的参数值,局部变量。生长方向:由高地址向低地址方向生长。生长方向:由低地址向高地址方向生长。存放全局变量,静态变量,常量。
2023-12-02 14:55:55
468
原创 Debug-Blocker反调试,父子进程实验调试
进程以调试模式运行自身或者其他的可执行文件的技术,是一种常见的反调试技术Debug blocker的基本原理是通过操作系统的API或者直接操作硬件来监测和阻止调试器的附加、断点设置、内存和寄存器的监视等调试操作。它可以通过修改软件的代码或者运行时动态地检测调试器的存在,并采取相应的防御措施。例如,可以在软件中插入反调试的代码来检测调试器的存在并采取相应的防御措施,或者通过操作系统的API来监测调试器的附加并阻止其附加到软件进程。
2023-11-10 22:09:10
350
原创 深入理解计算机系统——算数和逻辑运算
对于大多数64位的除法应用来说,除数也经常是64位的值,这个值应该存放在%rax中,%rdx的位应该设置为全0(无符号运算)或者%rax的符号位(有符号运算)此时可以用cqto来完成,这条指令隐含读出%rax的符号位,并将其复制到%rdx的所有位。第一个操作数是移位量,移位量可以是一个立即数,或者放在单字节寄存器%cl中。移位操作对w位长的数据值进行操作,移位量是由%cl寄存器的低m位决定的。salw w=16,m=4,由低4位决定,移位量为15。salq w=64,m=6,由低6位决定,移位量为63。
2023-11-04 19:09:41
94
原创 深度学习计算机基础——数据格式
注意,汇编代码使用后缀“l”表示4字节整数和8字节双精度浮点数,这不会产生歧义,因为浮点数使用的是一组完全不同的指令和寄存器。C语言数据类型在X86-64中的大小(在64位机器中,指针长8字节)
2023-11-04 11:47:48
71
原创 深入理解计算机系统——程序编码
1.编写完整函数,放进一个独立的汇编代码文件中,让汇编器和编译器把他和用C语言写的代码合并起来。2.用GCC的内联汇编,用asm伪指令可以在C程序中包含简短的汇编代码。在机器执行的程序只是一个字节序列,是一系列指令的编码,而对这些指令的源代码一无所知。在编译器生成汇编代码之后,所有以“.”开头的行都是知道汇编器和连接器工作的伪指令。2.而那些不太常用或操作数较多的指令所需的字节数较多。反汇编器使用的指令命名规则与GCC生成的汇编代码使用的有些细微差别。1.常用的指令以及操作数较少的指令所需的字节数少。
2023-11-03 16:08:17
77
原创 汇编——寻址方式
此时的偏移量是一个常数,变址寄存器可用到的两个是SI,DI,默认段都是DS。如果存放偏移地址的是BX,SI,DI,那么此时默认的段就是DS数据段。此处的偏移量是一个常数,基址寄存器可用到的有两个 BP,BX。此时的偏移地址的表示方法,[基址寄存器+变址寄存器+常量]如果存放偏移地址的寄存器是BP,那么默认的段是SS堆栈段。此时的偏移地址的表示方法,[基址寄存器]+[变址寄存器]此时的偏移地址的表示方法,[基址寄存器]+偏移量。此时的偏移地址的表示方法,[变址寄存器]+偏移量。
2023-11-02 17:43:42
196
原创 加壳和脱壳
7.2.1如果申请空间失败,并且有重定位表,则可在任意位置申请空间,大小还是 imagebase,然后将PE拉伸修复重定位表。位置就是src(原始程序)的imagebase,大小就是src的sizeofimage。可执行程序的入口点指向loader加载器,原始的程序存储在加壳程序的一个或多个附加的节中。将context的imagebase修改为Src的imagebase。7.1.如果申请空间成功,将src的PE文件拉伸,复制到该空间中。将外壳程序的OEP 修改为Src的OEP。最复杂的是解壳过程的代码。
2023-11-02 16:50:38
270
原创 PE与PE32+的区别
(有时也会有低3GB是用户空间,高1GB是内核空间的情况)2.PE32中BaseOfData用于指示数据节的起始位置。IMAGE_FILE_HEADER的machine字段。(EXE/DLL文件被加载到低位的8TB用户区域,2.在PE32+中删除了BaseOfData字段。SYS文件被加载到高位的8TB的内核区域)的数据类型变为ULONGLONG类型。主要的区别在第3个成员。为了适应增大的虚拟内存。与增大的虚拟内存相适应。
2023-08-15 22:20:42
287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人