![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
汇编语言
汇编语言,夯实计算机底层知识
南七行者
相信时间会创造奇迹。
展开
-
获取动态库中Windows API的地址(以ntdll.dll为例子)
一、任务打印Windows 2003中ntdll.dll的所有函数名及其地址。二、流程1.获取ntdll.dll的基址(1)汇编代码 unsigned long addr; __asm{ mov eax, fs:30h; mov eax, [eax+0ch]; mov ebx, [eax+1ch]; mov eax, [ebx+8]; mov addr, eax; };(2)解读①mov eax,原创 2020-12-23 19:45:58 · 1512 阅读 · 0 评论 -
Win32的缓冲区溢出攻击(涉及用WinDbg分析 overflow函数的返回地址所在的地址与buffer首地址的距离 OFF_SET)
一、实验目的在32位的Windows2003系统下对 homework. cpp用/FD /Zi/ GS-开关编译为可执行文件,用Windbg分析 overflow函数的返回地址所在的地址与buer首地址的距离 OFF SET。实验环境二、实验过程(先学习overflow)1.overflow函数的源代码#include <stdio.h>#include <string.h>char largebuff[] ="01234567890123456789ABCDEFGH原创 2020-12-14 22:32:28 · 903 阅读 · 0 评论 -
编写一个启动/bin/ls的shellcode(含VMware Tools安装)
编写一个启动/bin/ls的shellcode一、学习过程二、学习结果(已踩完坑)三、扩展阅读一、学习过程1.ls.c的编写、编译即验证(1) 编写ls.c#include <unistd.h>void foo() { char* name[2]; name[0] = "/bin/ls"; name[1] = NULL; execve(name[0], name, NULL);}int main(int argc, char* argv[]) {原创 2020-12-06 18:06:39 · 1088 阅读 · 2 评论 -
详解缓冲区溢出攻击(超级详细)
打印寄存器的值AT&T汇编中,命令中可以指定操作范围,如pushb是将一个byte压栈,而pushw就是将一个word压栈,同样pushl就是压栈long(也就是双字)。原创 2020-12-02 15:50:17 · 12090 阅读 · 1 评论 -
详解main函数反汇编代码(超级详细)
lea 0x4(%esp),%ecx该指令的作用是,取出esp寄存器里的值,加上4,不再继续寻址,而是将得到值直接传递给ecx;如果是其他指令,则还需进行间接寻址,再传值。lea ecx,[esp+0x4]EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。EBP存储着当前函数栈底的地址,栈低通常作为基址,我们可以通过栈底地址和偏移相加减来获取变量地址(很重要)。push .原创 2020-12-02 13:52:16 · 5359 阅读 · 0 评论