标签: reverse-engineering

Offbyone 缓冲区溢出有效负载中的 NULL 字节

所以我在下面的简单代码的帮助下尝试 Offbyone 缓冲区溢出

#include <string.h>

void cpy(char *x){
char buf[128]="";
strncat(buf,x,sizeof(buf));

}
int main(int argc, char **argv)
{

    cpy(argv[1]);

}
Run Code Online (Sandbox Code Playgroud)

此图描述了 Offbyone 缓冲区溢出的工作原理

在此输入图像描述

摘自: https: //www.sans.org/reading-room/whitepapers/threats/buffer-overflows-dummies-481

这是 main 和 cpy 的反汇编 在此输入图像描述

在此输入图像描述

这是我使用的有效负载 在此输入图像描述

内存转储

在此输入图像描述

因此,使用缓冲区,在 Cpy 堆栈帧中,我将保存的 RBP 的最低有效字节的值更改为00因为通过提供恰好 128 字节输入实现了 Offbyone 溢出

可以看到地址0x7fffffffe177存储了EBP,其值从0x7fffffffe190变为0x7fffffffe100

因此,我继续将有效负载的起始地址设置为地址0x7fffffffe10F ,这也是 main 的返回地址 ,应该是0xffffe110 0x00007fff而不是0xffffe110 0x90907fff,但由于我们不应该在有效负载中包含 00,所以我无法设置返回地址,因为它是 64 位地址,长度为 8 字节 0xffffe110 0x00007fff

那么我们到底应该如何获得这里的返回地址呢?由于内存转储的图像,在断点 1 中,它是 cpy 函数框架,为什么 argc 和 …

c exploit reverse-engineering

4
推荐指数
1
解决办法
4266
查看次数

从 Radare2 获取完整的二进制控制流程图

我想使用radare2 获得二进制文件(恶意软件)的完整控制流程图。
我从 SO 的另一个问题中关注了这篇文章。我想问是否ag有另一个命令可以提供整个二进制文件的控制流图,而不仅仅是一个函数的图。

reverse-engineering control-flow-graph radare2

4
推荐指数
1
解决办法
8786
查看次数

这个额外的字节是什么?

我正在研究 PE(可移植可执行文件)格式,但我发现用 MinGW 和 MSVC 编译的 C++ 程序之间存在差异:

图像

这是“此程序无法在 DOS 模式下运行”之后和“PE”魔术签名之前的一些额外字节。有人知道这是什么以及为什么有“Rich”这个词吗?

executable reverse-engineering portable-executable

4
推荐指数
1
解决办法
316
查看次数

C头文件如何导入win32api函数?

简短的问题。

当我做:

#include <windows.h>

CreateProcess(..)
Run Code Online (Sandbox Code Playgroud)

头文件如何知道将我连接到正确的 dll?

这些头文件中是否有一个字典将每个 win32api 函数映射到相关的 dll?

c winapi reverse-engineering

4
推荐指数
1
解决办法
1023
查看次数

radare2 中的 ASM 模式搜索

我想在radare2中搜索该类型的ASM模式

pop, mov, mov

这是三个连续的指令:第一个以pop开头,第二个以mov开头,第三个也是。

有一个 Radare2 的相关问题(https://github.com/radareorg/radare2/issues/13322),并说“itss alrady在/c中实现”,但/c现在需要搜索加密材料

我在 Linux 上使用radare2 4.5.0。

assembly reverse-engineering disassembly radare2

4
推荐指数
1
解决办法
1986
查看次数

fs:0x30 在 Linux 中提供什么?

我试图理解atexit()函数的源代码,但我坚持这一点 (第 409 行〜第 415 行,PTR_DEMANGLE()

我可以理解内联汇编需要取得重大进展

xor    rdx,QWORD PTR fs:0x30
Run Code Online (Sandbox Code Playgroud)

但我真的不明白 fs:0x30 的含义是什么

所以我搜索了google但只得到了Windows上fs:0x30的含义,这与PEB相关

我还尝试搜索PTR_DEMANGLE()函数,并找到了这个,但没有帮助

这也给我提出了一个新问题:

比如说,我需要知道 fs:0xXX 的用法,这是很少使用的。我应该直接参考哪本手册?ELF标准文件?

顺便说一句,英语不是我的母语,这篇文章可能有一些语法或拼写错误,请原谅我,非常感谢!

assembly glibc reverse-engineering x86-64 thread-local-storage

4
推荐指数
1
解决办法
1181
查看次数

从WSDL文件反向设计Web服务接口的最佳方法?

我在一个我无法访问开发和测试的系统上继承了Web服务的WSDL文件.

我需要生成一个遵循该WSDL的Web服务.包装器是.NET,但如果有一种简单的方法可以与另一个平台一起使用,我们可能会看到它.生产Web服务是基于Java的.

这样做的最佳方法是什么?

注意:继承的wsdl似乎与wsdl.exe不兼容,因为它不符合WS-I Basic Profile v1.1.特别是,传递它的组提到它使用了Microsoft工具不支持的另一个标准,但他们没有澄清.该错误与所需的"名称"字段有关:

Error: Element Reference '{namespace}/:viewDocumentResponse' declared in
schema type '' from namespace ''
       - the required attribute 'name' is missing

为了清楚起见,我理解我可以从WSDL文件中轻松创建.NET包装类,但这不是我需要的.就像这样:

更新:使用Axis创建原始Web服务.

显示不可用的Web服务和模拟Web服务的系统图http://paulw.us/blog/uploads/SO-WSDL-Question2.gif

.net wsdl web-services reverse-engineering

3
推荐指数
1
解决办法
6608
查看次数

VIsio 2010无法"看到"文件DSN

我正在使用Visio 2010 Pro对我的数据库进行逆向工程.由于某种原因,向导无法看到我的文件dsns(我使用向导创建它们),但系统DSN工作正常.我想让我的DSN文件可移植,以便与我的团队共享.

我尝试以管理员身份运行Visio,并创建了无数文件DNS但没有成功.有什么我想念的吗?

visio datasource reverse-engineering sql-server-2008 windows-7-x64

3
推荐指数
1
解决办法
1015
查看次数

执行直到用户代码不起作用

我正在尝试使用OllyDbg的"执行直到用户代码"功能(这对我来说很重要),但它永远不会奏效.

我首先尝试了一个叫做的程序MessageBoxA.当它调用它时,我在调试器中暂停程序并发出OllyDbg执行直到用户代码,但程序仍然暂停并完全冻结.我甚至无法点击MessageBox确定按钮,甚至从OllyDbg继续.当我努力让它继续下去时它就崩溃了.

所以我决定在NASM中编写一个应用程序(完全控制)并在那里尝试.在MessageBoxA弹出,我暂停,直到执行用户代码,我可以按OK按钮这段时间,但一旦我做了OllyDbg的没有暂停程序.该程序刚刚执行,好像什么也没发生.

为什么它不起作用,我该怎么做才能解决它?

OllyDbg 1.10(无插件)
Windows 7旗舰版SP1 64位

更新:
我尝试使用OllyDbg 2.0,但由于某种原因,执行直到用户代码按钮被完全禁用.

windows debugging reverse-engineering ollydbg

3
推荐指数
1
解决办法
2136
查看次数

无法设置4字节硬件断点Windbg

我无法使用windbg设置4字节读/写访问硬件断点.

0:000> dd 02e80dcf
02e80dcf  13121110 17161514 1a191800 1e1d1c1b
02e80ddf  011c171f c7be7df1 00000066 4e454900
Run Code Online (Sandbox Code Playgroud)

实际上我必须检查程序改变/覆盖值0x13121110(地址0x02e80dcf)的时间.

所以当我试图设置一个4字节的写访问硬件断点@ 0x02e80dcf时,我得到的数据断点必须对齐错误.

0:000> ba w 4 02e80dcf
Data breakpoint must be aligned
                     ^ Syntax error in 'ba w 4 02e80dcf'
0:000> ba r 4 02e80dcf
Data breakpoint must be aligned
                     ^ Syntax error in 'ba r 4 02e80dcf'
0:000> ba w 1 02e80dcf
breakpoint 0 redefined
Run Code Online (Sandbox Code Playgroud)

我能够在地址处设置1字节写访问断点,但是当指针@地址0x02e80dcf被覆盖时它不会被触发.

而且,如果有人可以建议任何其他方式来检测地址覆盖的东西将是非常有帮助的.

注意:我遇到的特定程序问题.我可以在同一调试环境中设置4字节硬件断点.

c++ debugging windbg reverse-engineering

3
推荐指数
1
解决办法
1100
查看次数