逆向基础3. 结构体数组的汇编结构结构体数组的汇编结构 在栈上的数组数据结构 测试使用结构体如下 123456typedef struct { int id; int count; int count2; int count3;} GameObject; 测试代码如下 123456789101112131415161718192021int main() 2024-07-29 逆向 > 学习 > 汇编 #逆向 #汇编
逆向基础2. C语言数据结构的汇编结构C语言数据结构的汇编结构 局部变量的分配和访问 12345678910long long var(){ char a = 0x1; short b = 0x10; int c = 0x11; long d = 0x100; long long e = 0x101; return a + b + c + d + e;} 已剔除保 2024-07-27 逆向 > 学习 > 汇编 #逆向 #汇编
在Hexo中使用Asciidoc格式编写文章在Hexo中使用Asciidoc格式编写文章 前言 虽然markdown简单易懂, 但是其功能有时非常有限, 例如自定义的表格, mark等, 需要使用三方语法甚至内嵌html来实现, 于是打算使用asciidoc来编写文章, 但是hexo默认不支持asciidoc, 本文记录hexo适配asciidoc的过程. 安装asciidoc 虽然已经有了 hexo-renderer-as 2024-07-27 笔记 #笔记 #Hexo
逆向基础1. C语言函数调用C语言函数调用 1.简单调用 总览 对于一个简单的C语言程序, 其代码如下 123456789101112#include <iostream>int plus(int a, int b){ auto data = a + b; return data;}int main(){ auto data = plus(1, 2) 2024-07-26 逆向 > 学习 > 汇编 #逆向 #笔记 #汇编
x64汇编常用寄存器寄存器 名称 描述 RAX 累加器寄存器 运算/存储返回值 RBX 基址寄存器 存储内存地址, 数据操作 RCX 计数寄存器 常用于字符串和循环操作 RDX 数据寄存器 常用于输入/输出操作 RSI 源索引寄存器 常用于字符串操作 RDI 目的索引寄存器 常用于字符串操作 RBP 基址指针寄存器 指向栈底 RSP 栈指针寄存器 指向栈顶 2024-07-25 #汇编 #寄存器
通过调用栈确定逻辑位置通过调用栈确定逻辑位置 输入错误的名称和注册码, 点击注册后弹出注册失败的信息框后, 在od中暂停程序 切换到调用栈窗口, 寻找MessageBox的调用 对其进行跟踪目标可以看到其调用者 可以看见程序断在 call MessageBoxA, 在MessageBoxA下下断, 点击继续运行并继续程序, 返回到程序点击信息框中的确定 此时程序中断, 然后运行到程序领空, 即可看到对应 2024-07-13 逆向 > 学习 > 栈 #逆向 #栈
逆向常见指令笔记test eax, eax 用来判断eax是否为0, 为0则跳转 和 cmp eax, 0 在比较时几乎一样 123if (eax == 0) { // do something} eax = eax == 0 ? 1 : 0 123neg eax ; cf = if eax != 0 { 1 & 2024-07-13 逆向 > 学习 > 汇编 #逆向 #汇编
Imgui hook 注入 DirectX 和 OpenGL0x01 Imgui 工作流程Imgui 的工作流程简单来说分为下面三步: 初始化 渲染 释放 下面以D3d11 Imgui Example为例解释需要获取的参数: Imgui 初始化123456789101112131415161718192021222324// 创建WindowsWNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc 2024-02-12 逆向 > Hook #逆向 #Imgui
逆向call栈追踪参数传递在函数调用时, 使用栈传递参数, 其汇编如下 123push 参数2push 参数1call xxxxx 调用call后, 会将返回地址也压入栈中, 此时栈中结构如下 esp 返回地址 esp+4 参数1 esp+8 参数2 函数开头push的作用1. 局部变量开辟12push xxxsub esp, 0x10 2. 保存寄存器查看call的结尾, 查找对应的pop 2024-01-12 逆向 > 学习 > 栈 #逆向 #栈
在Flutter项目使用FFI调用Golang项目全记录前言目前有一个项目涉及到html的解析, js执行等. 由于dart的库并不是很完善, 于是打算使用golang来实现这部分功能, 然而在过程中遇到了许多坑, 特此记录过程 0x01 go代码编写这里使用go的otto做一个javascript解析器, 项目代码如下: 12345678910111213141516171819202122232425262728293031323334353637 2022-02-03 开发 #笔记 #flutter #go