标签: reverse-engineering

DotPeek 不正确反序列化 dll

我已经通过 dotPeek 1.4 反编译了 DLL 以查看内部发生了什么,但是有一些奇怪的 c# 代码(请查看附件)。有

  • 没有 var 名称的 var 声明
  • 我认为有些 var 是数字,它们没有名字

为什么生成该代码?dll 是否可以防止反编译或 dll 发布为 realease?

在此处输入图片说明

使用Reflector试用版反编译也出现同样问题

在此处输入图片说明

.net c# decompiling reverse-engineering dotpeek

2
推荐指数
1
解决办法
3409
查看次数

不了解 Hopper 反编译器输出

我知道一些 C 和一点汇编,想开始学习逆向工程,所以我下载了适用于 Mac 的 Hopper Disassembler 试用版。我创建了一个超级基本的 C 程序:

int main() {
    int a = 5;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并使用 -g 标志编译它(因为我之前看到过这个并且不确定它是否重要):

gcc -g simple.c
Run Code Online (Sandbox Code Playgroud)

然后我a.out在 Hopper Disassembler 中打开文件并点击伪代码按钮,它给了我:

int _main() {
    rax = 0x0;
    var_4 = 0x0;
    var_8 = 0x5;
    rsp = rsp + 0x8;
    rbp = stack[2047];
    return 0x0;
}
Run Code Online (Sandbox Code Playgroud)

我在这里理解的唯一一行是将变量设置为0x5. rsp = rsp + 0x8;对于这样一个简单的程序,我无法理解所有这些附加行的用途(例如)。有人愿意向我解释这个吗?

此外,如果有人知道逆向工程介绍的良好来源/教程,那也会非常有帮助。谢谢。

c assembly reverse-engineering pseudocode hopper

2
推荐指数
1
解决办法
2299
查看次数

IDA 如何使用命令或脚本保存内存转储?

  1. IDA,十六进制视图 这里图片
  2. 我用鼠标从 StartAddress 到 EndAddress 的字节区域选择
  3. 右键单击 -> 保存到文件
  4. 得到内存转储。

如何与命令相同?如: SaveDump(StartAddress , EndAddress) SaveDump(0x00001000 , 0x00002000)

python debugging reverse-engineering ida

2
推荐指数
2
解决办法
1万
查看次数

如何使用检测在 Java 中打印运行时调用的所有方法?

我想打印出在运行时调用的所有方法。它们应该按照它们被调用的顺序打印出来,如果它们被多次调用,它们应该被打印多次。

这可用于逆向工程 - 查看当您按下按钮或执行特定操作时调用哪些函数。

我想为此使用 Java 代理和检测。

java instrumentation reverse-engineering javaagents javassist

2
推荐指数
1
解决办法
1919
查看次数

从 react.js 源代码生成序列图的工具

我正在从在线教程中学习 react.js。源代码在教程本身中提供。当源代码被提供给某些人时,如果我可以查看显示项目中使用的组件之间的交互、分派的动作、类、无状态函数和高阶函数以及项目的整体架构和组织的序列图,这将很有用工具。是否有任何工具可以完成这项工作?

reverse-engineering reactjs

2
推荐指数
1
解决办法
5773
查看次数

汇编语言中AES代码参数的检测

我想在逆向工程后以二进制形式定位 AES 代码部分。我尝试手动定位(使用 S-Boxes)并使用插件 findcrypt2 并且我成功地在汇编中识别 AES 但未能定位其他参数,如密钥大小、加密模式(ECB、CFB 或任何其他)等。如果有人可以向我展示如何在汇编/二进制文件中获取这些参数的说明。

任何帮助将不胜感激。谢谢

binary assembly reverse-engineering aes ida

2
推荐指数
1
解决办法
363
查看次数

这个汇编 x86 代码的反编译 (C) 代码构造是什么?

此代码将字符串的每个字符(位于ebp+arg_0)与不同的常量(ASCII 字符)进行比较,例如“I”、“o”和“S”。我猜,基于其他代码部分,这段代码最初是用 C 编写的。

集会

这个比较代码部分看起来效率很低。我的问题是,你认为这段代码在 C 中看起来如何?最初使用什么代码结构?到目前为止我的想法

  • 这不是for 循环。因为我没有看到任何向上跳跃和停止条件。

  • 这不是一个 while/case/switch 代码构造

  • 我最好的猜测是,这是很多连续的 if/else 语句。你能帮我吗?

是的,这是挑战的一部分,我已经有了标志/解决方案,不用担心。只是想更好地理解代码。

c x86 assembly decompiling reverse-engineering

2
推荐指数
1
解决办法
282
查看次数

GDB还是Radare2?

我应该使用 GDB 还是 Radare2 来反转可执行文件(我是初学者)?我尝试用 C 编程,但出现了 SegFault。我想对其进行逆向工程以获得装配经验并查看我在哪里获得 SegFault。

debugging assembly gdb reverse-engineering radare2

2
推荐指数
1
解决办法
1855
查看次数

如何将 DataFrame 反转回其代码形式?

我希望能够将数据帧反转回其代码形式。

所以我们知道这个代码形式

dat=pd.DataFrame(dict(Date=['19/11/2012', '20/11/2012', '21/11/2012'],
                    A=[1,3,1],
                    B=[3,2,2],
                    C=[4,3,2],
                    D=[5,2,2],))
Run Code Online (Sandbox Code Playgroud)

在创建的DataFrame 中给出结果,如下所示:

+---+------------+---+---+---+---+
|   |    Date    | A | B | C | D |
+---+------------+---+---+---+---+
| 0 | 19/11/2012 | 1 | 3 | 4 | 5 |
| 1 | 20/11/2012 | 3 | 2 | 3 | 2 |
| 2 | 21/11/2012 | 1 | 2 | 2 | 2 |
+---+------------+---+---+---+---+
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法让我将上面的DataFrame转换回其代码形式?在上面的示例中,我事先知道创建 DataFrame 的代码,但实际上我没有这些信息。

python reverse-engineering dataframe pandas

2
推荐指数
1
解决办法
143
查看次数

在 O(n) 的复杂度内反转 SHA-256 sigma0 函数?

介绍

作为 SHA-256 散列算法的一部分,有一个函数通常被称为?1,或者sigma0为了方便起见。基本上,它以 X 作为输入,其中 X 是 32 位无符号值。然后像这样转换它:

ROTATE_RIGHT(X, 7) ^ ROTATE_RIGHT(X, 18) ^ SHIFT_RIGHT(X, 3)

Run Code Online (Sandbox Code Playgroud)

一点解释,如果你需要的话:

  • ROTATE_RIGHT(X, Y) - 将 X 的位向右旋转 Y
  • SHIFT_RIGHT(X, Y) - 将 X 的位右移 Y,因此结果的前 Y 位始终为 0

另外,如果您需要代码,这里是 Python 的完整版本:

ROTATE_RIGHT(X, 7) ^ ROTATE_RIGHT(X, 18) ^ SHIFT_RIGHT(X, 3)

Run Code Online (Sandbox Code Playgroud)

反向功能

我开始怀疑那个东西是否可逆,令我惊讶的是,编写一个函数并没有花很长时间,该函数根据 givensigma0的输出返回该函数的输入,或者简单地说,反转sigma0函数。我不会把代码放在这里,因为它是用 Node.js 编写的,并且根据sigma0通过掩码搜索特定输入的更复杂的需求进行了大量修改,但我想给你一个我如何解决它的基本概念,所以也许你可以用一些关于如何实现我需要的新想法来启发我。

我的解决方案很简单,但它也是递归的。我们知道每个输出的位都是两个或三个输入位的异或运算的结果。所以我制作了一个依赖表,以便我可以看到输出位如何受到输入位的影响:

I:  00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31

R7  25,26,27,28,29,30,31,00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
R18 14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,00,01,02,03,04,05,06,07,08,09,10,11,12,13
S3  zz,zz,zz,00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
---------------------------------------------------------------------------------------------------
O:  00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
Run Code Online (Sandbox Code Playgroud)

这件事是关于什么的?假设,在输出的第 1 位中,我们有 1。为方便起见,我将其写为O[0], …

algorithm hash cryptography reverse-engineering

2
推荐指数
1
解决办法
410
查看次数