标签: disassembly

找出静态C库的功能

我有一个静态C库(比如说mylib.a),我想知道是否有可能找出该文件中实现的功能.我没有相应的头文件.我需要的就是javapJava 的等价物.

c dump static-libraries disassembly

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

如何拆卸剥离应用程序的主要功能?

假设我编译了下面的应用程序并删除了它的符号.

#include <stdio.h>

int main()
{
    printf("Hello\n");
}
Run Code Online (Sandbox Code Playgroud)

构建过程:

gcc -o hello hello.c
strip --strip-unneeded hello
Run Code Online (Sandbox Code Playgroud)

如果应用程序没有被剥离,则拆卸主要功能将很容易.但是,我不知道如何反汇编应用程序的主要功能.

(gdb) disas main
No symbol table is loaded.  Use the "file" command.

(gdb) info line main
Function "main" not defined.
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?它甚至可能吗?

注意:这必须仅使用GDB.忘掉objdump.假设我无权访问代码.

我们将非常感谢一步一步的例子.

c linux gdb strip disassembly

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

.NET函数被反汇编

在反汇编.NET函数时,我注意到它们都是以类似于similair的模式开始的.这个初始代码有什么作用?

此代码出现在函数应该执行的实际代码之前.它是某种参数计数验证吗?

FUNC1

private static void Foo(int i)
{
   Console.WriteLine("hello");
}

00000000  push        ebp 
00000001  mov         ebp,esp 
00000003  push        eax 
00000004  mov         dword ptr [ebp-4],ecx 
00000007  cmp         dword ptr ds:[005C14A4h],0 
0000000e  je          00000015 
00000010  call        65E0367F 
//the console writleline code follows here and is not part of the question
Run Code Online (Sandbox Code Playgroud)

FUNC2

static private void Bar()
{
   for (int i = 0; i < 1000; i++)
   {
      Foo(i);
   }
}

00000000  push        ebp 
00000001  mov         ebp,esp 
00000003  push        eax 
00000004  cmp         dword …
Run Code Online (Sandbox Code Playgroud)

.net c# il disassembly

31
推荐指数
1
解决办法
971
查看次数

使用objdump反汇编平面二进制文件

我可以使用objdump反汇编平面二进制文件吗?

我熟悉使用以下方法反汇编结构化二进制可执行文件,例如ELF文件:

objdump -d file.elf
Run Code Online (Sandbox Code Playgroud)

但是,如果我有一个我知道应该加载的平面二进制文件,例如地址0xabcd1000,我可以请求objdump反汇编吗?我尝试提供诸如'--start-address = 0xabcd1000'之类的选项,但是objdump只是声明它不能识别格式.

我有关于如何反汇编文件的其他想法,但我想知道objdump是否可以提供一个简单的解决方案.

reverse-engineering objdump disassembly

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

如何在COMPILATION期间查看解析树,中间代码,优化代码和汇编代码?

我正在学习编译器课程,程序汇编遵循以下步骤

  1. 词汇分析
  2. 语法分析
  3. 语义分析
  4. 中间代码生成
  5. 代码优化
  6. 目标代码生成.

如何查看每个步骤的输出,例如我希望在语法分析后看到解析树.

我正在使用GCC编译器在Linux机器上编译程序.

我们可以通过在gcc中使用-Wa编译器选项来查看程序的汇编代码,同样可以看到Tokens,Parse tree和Inetmediate代码.

compiler-construction parsing gcc disassembly

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

从.NET DLL文件生成PDB?

我需要一些可以从DLL文件(C#.NET代码)生成PDB的东西,有没有免费程序可以做到这一点?

.net c# debugging disassembly pdb-files

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

将机器代码翻译成LLVM IR(X86_64的拆卸/重组.X86.ARM到LLVM bitcode)

我想将X86_64,x86,ARM可执行文件转换为LLVM IR(反汇编).

你建议什么解决方案?

assembly translation llvm opcode disassembly

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

objdump如何设法使用-S选项显示源代码?

二进制文件中是否有对源文件的引用?我尝试在二进制文件上运行字符串,但找不到对列出的源文件的任何引用...

c linux gcc objdump disassembly

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

"静态合成"是什么意思?

我正在查看从Java字节码获取的一些反汇编代码.我看到一些声明如下:

.method static synthetic access$0()Lcom/package/Sample;
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚什么syntheticaccess$0意味.有人可以帮我理解这部分吗?

java bytecode disassembly java-synthetic-methods

25
推荐指数
2
解决办法
9303
查看次数

为什么这个内存地址%fs:0x28(fs [0x28])有一个随机值?

我写了一段C代码,我已经拆解了它,并阅读了寄存器以了解程序在汇编中的工作原理.

int test(char *this){
    char sum_buf[6];
    strncpy(sum_buf,this,32);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我一直在研究的代码是测试功能.当我反汇编输出我的测试功能时,我得到...

   0x00000000004005c0 <+12>:        mov    %fs:0x28,%rax
=> 0x00000000004005c9 <+21>:        mov    %rax,-0x8(%rbp)
... stuff ..
   0x00000000004005f0 <+60>:        xor    %fs:0x28,%rdx
   0x00000000004005f9 <+69>:        je     0x400600 <test+76>
   0x00000000004005fb <+71>:        callq  0x4004a0 <__stack_chk_fail@plt>
   0x0000000000400600 <+76>:        leaveq 
   0x0000000000400601 <+77>:        retq 
Run Code Online (Sandbox Code Playgroud)

我想知道的mov %fs:0x28,%rax是真正在做什么?

c gcc x86-64 buffer-overflow disassembly

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