标签: reverse-engineering

如何分析封闭格式(例如doc或vce)?

我想学习.vce格式.它是一种二进制格式,看起来比简单的对象序列化更复杂.是否存在分析二进制格式的任何工具或技术?

format binary analysis reverse-engineering

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

编译java代码到exe(例如使用Launch4Java)确保代码不能被反向设计?

在对自己进行实验之后,我确信java代码的阻塞在防止反向代码工程方面并不安全.所以,我转而使用Launch4J将我的一个核心jar文件捆绑到一个EXE文件中.jar文件也包含主要的入口方法.这是否会再次保护代码逆向工程?

java reverse-engineering launch4j

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

为什么对rt.jar进行简单更改会导致Java Runtime Environment无声崩溃?

这就是我正在做的事情:

  1. 提取我的JRE的rt.jar的内容
  2. 提取我的JDK的src.zip(相同版本)

现在,如果我从提取的src文件夹中复制Runtime.java并使用javac.exe进行编译而不进行任何修改,然后将其放入解压缩的rt文件夹中,最后使用jar.exe将所有内容放回到jar文件中,一切都按预期工作.JRE运行良好.

但是,如果我对Runtime.java进行最轻微的更改并将其编译并放入rt.jar,那么只要我尝试启动它,JRE就会崩溃.这是导致无声崩溃的轻微更改的示例:

/** Don't let anyone else instantiate this class */
    private Runtime() {
        System.out.println("This is a test.");
    }
Run Code Online (Sandbox Code Playgroud)

代替:

/** Don't let anyone else instantiate this class */
    private Runtime() {}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么这会导致我的JRE崩溃?

提前致谢.

java crash compilation reverse-engineering

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

IDA Pro中的调试部分是什么?

我尝试用我糟糕的装配技巧来分析一个dll文件,所以请原谅我,如果我无法实现非常微不足道的事情.我的问题是,在调试应用程序时,我发现我只在调试会话中寻找的代码,在我停止调试器后,地址消失了.dll看起来不会被混淆,因为许多代码都是可读的.看一下截图.我正在寻找的代码位于debug376部分的地址07D1EBBF.BTW,我在哪里获得这个debug376部分?

所以我的问题是,如何在不调试的情况下找到此功能?谢谢

UPDATE

好吧,正如我所说,一旦我停止调试器,代码就会消失.我甚至无法通过字节序列找到它(但我可以在调试模式下).当我启动调试器时,代码不会立即被反汇编,我应该在那个地方添加一个硬件断点,只有当断点被击中时,IDA才会显示反汇编的代码.看一下这个截图 您会看到我感兴趣的代码行,如果程序没有在调试模式下运行,则该代码行不可见.我不确定,但我认为它类似于在运行时解包代码,这在设计时是不可见的.

无论如何,任何帮助将不胜感激.我想知道为什么代码被隐藏,直到断点命中(它显示为"db 8Bh"等)以及如何在没有调试的情况下找到该地址(如果可能).BTW,这可能是来自不同模块(dll)的代码吗?

谢谢

更新2

我发现debug376是在运行时创建的一个段.这么简单的问题:我怎样才能找到这个细分来自哪里:)

reverse-engineering ida disassembly

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

disbamble函数在windbg中的起始地址

我可以gdb使用disas functionname命令找到函数的起始地址.

如何使用WinDBG执行相同的操作?

windbg reverse-engineering disassembly

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

我可以破解USB安全加密狗吗?

我必须为使用加密狗激活的程序开发一个插件.我想知道我可以破解usb的密钥还是别的什么?

cracking reverse-engineering usbserial dongle

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

使用二进制代码和密钥防止逆向工程

我正在开发一个必须部署在具有root访问权限的客户端的私有云服务器上的软件程序.我可以通过安全端口与软件进行通信.

我想阻止客户对我的程序进行逆向工程,或者至少让它"足够难".以下是我的方法:

  1. 在Go中编写代码并将软件编译成二进制代码(可能是混淆)
  2. 确保只能使用可通过安全端口发送的密钥启动程序.密钥可以根据时间而变化.
  3. 每次我需要启动/停止程序时,我都可以通过安全端口发送带有密钥的命令.

我认为这种方法可以阻止root用户:

  1. 使用调试器对我的代码进行反向工程

  2. 反复运行程序以检查输出

我的问题是:这个设计的弱点是什么?root用户如何攻击它?

reverse-engineering deobfuscation

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

从ELF中删除装配说明

我正在研究一个混淆的二进制文件作为crackme挑战的一部分.它得到的序列push,popnop指令(该指令将重复数千次).从功能上讲,这些块对程序没有任何影响.但是,他们非常努力地生成CFG和逆转过程.

有关于如何将指令更改为nop的解决方案,以便我可以删除它们.但在我的情况下,我想完全剥离这些指令,以便我可以更好地了解CFG.如果指令被剥离,我理解必须修改内存偏移量.据我所知,没有工具可以直接实现这一目标.

我正在使用IDA Pro评估版.我也对使用其他逆向工程框架的解决方案持开放态度.如果它是可编写脚本的,则是可取的.

我经历了一个类似的问题但是,建议的解决方案不适用于我的情况.

linux x86 assembly reverse-engineering elf

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

在汇编时Int与Double

为什么GCC编译器在使用double时会添加这三行而在有Int时不添加?


使用int:

#include <cstdio>

int main(){
    int i = 1;
}
Run Code Online (Sandbox Code Playgroud)

==>

main:
        push    ebp
        mov     ebp, esp
        sub     esp, 16
        mov     DWORD PTR [ebp-4], 1
        mov     eax, 0
        leave
        ret
Run Code Online (Sandbox Code Playgroud)

双倍:

#include <cstdio>

int main(){
    double i = 1;
}
Run Code Online (Sandbox Code Playgroud)

==>

main:
        lea     ecx, [esp+4]            // This three lines
        and     esp, -8                 //  ...
        push    DWORD PTR [ecx-4]       //  ...
        push    ebp
        mov     ebp, esp
        push    ecx
        sub     esp, 20
        fld1
        fstp    QWORD PTR [ebp-16]
        mov     eax, 0
        add …
Run Code Online (Sandbox Code Playgroud)

c c++ x86 gcc reverse-engineering

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

试图在32位ELF中找到隐藏的字符串

别担心,我不会要求答案.

我试图在一个简单的1函数32位exe中找到一个隐藏的字符串(可能是一封电子邮件?)

我已经在文件上运行了字符串,没有用.

我已经将文件反编译为ASCII并找到了主要功能.

文件显示它是GCC可执行文件.

这是主要功能的asm:

        ; ================ B E G I N N I N G   O F   P R O C E D U R E ================

        ; Variables:
        ;    arg_0: int, 4


             main:
080489cc         lea        ecx, dword [esp+arg_0]                              ; Begin of unwind block (FDE at 0x80d6cb8), DATA XREF=_start+23
080489d0         and        esp, 0xfffffff0
080489d3         push       dword [ecx-4]
080489d6         push       ebp
080489d7         mov        ebp, esp
080489d9         push       esi
080489da         push       ebx
080489db         push       ecx
080489dc         sub        esp, 0x2c
080489df …
Run Code Online (Sandbox Code Playgroud)

x86 assembly reverse-engineering elf

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