我已经通过 dotPeek 1.4 反编译了 DLL 以查看内部发生了什么,但是有一些奇怪的 c# 代码(请查看附件)。有
为什么生成该代码?dll 是否可以防止反编译或 dll 发布为 realease?

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

我知道一些 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;对于这样一个简单的程序,我无法理解所有这些附加行的用途(例如)。有人愿意向我解释这个吗?
此外,如果有人知道逆向工程介绍的良好来源/教程,那也会非常有帮助。谢谢。

如何与命令相同?如: SaveDump(StartAddress , EndAddress) SaveDump(0x00001000 , 0x00002000)
我想打印出在运行时调用的所有方法。它们应该按照它们被调用的顺序打印出来,如果它们被多次调用,它们应该被打印多次。
这可用于逆向工程 - 查看当您按下按钮或执行特定操作时调用哪些函数。
我想为此使用 Java 代理和检测。
java instrumentation reverse-engineering javaagents javassist
我正在从在线教程中学习 react.js。源代码在教程本身中提供。当源代码被提供给某些人时,如果我可以查看显示项目中使用的组件之间的交互、分派的动作、类、无状态函数和高阶函数以及项目的整体架构和组织的序列图,这将很有用工具。是否有任何工具可以完成这项工作?
我想在逆向工程后以二进制形式定位 AES 代码部分。我尝试手动定位(使用 S-Boxes)并使用插件 findcrypt2 并且我成功地在汇编中识别 AES 但未能定位其他参数,如密钥大小、加密模式(ECB、CFB 或任何其他)等。如果有人可以向我展示如何在汇编/二进制文件中获取这些参数的说明。
任何帮助将不胜感激。谢谢
此代码将字符串的每个字符(位于ebp+arg_0)与不同的常量(ASCII 字符)进行比较,例如“I”、“o”和“S”。我猜,基于其他代码部分,这段代码最初是用 C 编写的。

这个比较代码部分看起来效率很低。我的问题是,你认为这段代码在 C 中看起来如何?最初使用什么代码结构?到目前为止我的想法
这不是for 循环。因为我没有看到任何向上跳跃和停止条件。
这不是一个 while/case/switch 代码构造
我最好的猜测是,这是很多连续的 if/else 语句。你能帮我吗?
是的,这是挑战的一部分,我已经有了标志/解决方案,不用担心。只是想更好地理解代码。
我应该使用 GDB 还是 Radare2 来反转可执行文件(我是初学者)?我尝试用 C 编程,但出现了 SegFault。我想对其进行逆向工程以获得装配经验并查看我在哪里获得 SegFault。
我希望能够将数据帧反转回其代码形式。
所以我们知道这个代码形式:
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 的代码,但实际上我没有这些信息。
作为 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)
一点解释,如果你需要的话:
另外,如果您需要代码,这里是 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], …