二进制逆向
文章平均质量分 71
逆向入门
天问_Herbert555
努力把人生变成自己所期待的样子!
展开
-
pwn学习day4——ret2text
覆盖函数返回地址到程序内存在的gadgets获取shell。找到hint函数地址就可以解出题目了,但是打死都不行。gdb断点至scanf函数处,也没看出来哪里出现了问题。32位这里遇到个问题,按理来说覆盖长度为。直接溢出至hint函数处即可。问大佬说是因为需要绕过ecx。原创 2023-06-29 17:00:00 · 566 阅读 · 0 评论 -
pwn学习day3——函数调用约定
规定函数调用时如何传递参数,如何返回值,如何进行栈管理。原创 2023-06-28 08:00:00 · 491 阅读 · 0 评论 -
PWN学习day2——plt、got表+动态延迟绑定
执行过程:call库函数首先会跳转到plt条目的第一条指令处将got表中偏移压入栈中,并跳转到解析地址的代码片段解析完成后跳转去执行库函数并把实际地址写入got表。原创 2023-06-27 07:00:00 · 528 阅读 · 0 评论 -
pwn学习day1——ELF文件结构
ELF 文件的结构可以根据不同的操作系统和体系结构而有所差异。原创 2023-06-26 10:11:57 · 1181 阅读 · 0 评论 -
c++之shellcode加载器
文章目录VirtualAlloc申请内存堆VirtualAlloc申请内存#include <windows.h>#include <iostream>#include <time.h>#pragma comment (lib, "winmm.lib")#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")void startShellCode(){ unsi原创 2022-05-26 20:30:18 · 3712 阅读 · 1 评论 -
修改pe程序入口点
固定基址-便于调试修改入口点程序使用x64dbg打开,可以看到程序基址为140000000程序的入口点为11023,那么在内存中,程序入口点=基址+偏移量=140000000+11023=140011023ctrl+G定位到140011023,然后找一个空白处,这里选择1400113B3,修改汇编代码为jmp 0x140011023 右键→补丁→修补文件,保存文件为project2.exe,然后将程序入口点修改为00113B3现在运行project2.exe,可以发现入口点已经到了140.原创 2022-05-26 20:23:16 · 1711 阅读 · 1 评论 -
c++ 自定义程序入口函数 vs2019
文章目录注意点方法一方法二注意点1.需要使用release生成,不能用debug,不然会报错2.子系统需要修改为窗口,(如果使用控制台会缺少一些组件,无法创建控制台,报错从而导致编译失败)方法一在代码中定义入口点使用#pragma comment (linker,"/ENTRY:<函数名>")定义入口函数,例如:#pragma comment(linker,"/entry:EntryMain")int EntryMain(){ return 0;}方法二这里写入原创 2022-05-26 20:19:16 · 3822 阅读 · 1 评论 -
常用windwos api
申请内存VirtualAlloc && VirtualAllocEx#include<iostream>#include<Windows.h>int main() { // 最小分配1000 LPVOID pp = VirtualAlloc(NULL, 1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE); // GetCurrentProcess:获得当前进程的句柄 LPVOID pp1 = Virtua.原创 2022-05-26 19:47:38 · 412 阅读 · 0 评论 -
shellcode编写
文章目录注意事项基础知识开始编写第一步 初始化第二步 实现其他函数动态调用第三部 实现GetProcAddress和LoadLibraryA的动态调用获取kernel32.dll基址动态调用GetProcAddress实战CreateFileAMessageBoxA导出shellcode第一种shellcode编写实例1第一种shellcode编写实例2(优化结构)shellcode加载器注意事项不使用全局变量不使用类似于"abc"这样的字符串,通过数组定义字符串,char name[] = {0x原创 2022-05-26 19:14:37 · 2817 阅读 · 1 评论 -
汇编_基础概念
文章目录前言位运算通用寄存器内存与内存地址前言这篇文章可以对汇编语言有一个基础的认识汇编语言入门教程位运算位运算汇编指令汇编指令C语言释义and&与两个位都为1时,结果才为1or|或两个位都为0时,结果才为0xor^异或两个位相同为0,相异为1not~取反0变1,1变0shl<<左移各二进位全部左移若干位,高位丢弃,低位补0shr/sar>>右移各二进位全部右移若干位,对无符原创 2022-05-22 12:16:20 · 635 阅读 · 0 评论 -
汇编_常用指令
常用汇编指令word ptr 与 byte ptrword ptr指明了指令访问的内存单元是一个字单元。byte ptr指明了指令访问的内存单元是一个字节单元。dword ptr指令访问的内存单元是一个双字单元。push例如下面这段汇编指令_main: push 3 push 2第一行_main,会创建一个main帧第二行push 3,会将esp寄存器里的地址减去四个字节,然后将3存入该地址第三行push 2,会将esp寄存器里的地址再减去四个字节,然后将2存原创 2022-05-22 12:15:50 · 11569 阅读 · 2 评论