标签: reverse-engineering

黑客打样jar文件

我可以使用哪些技术来制作我的"jar"文件逆向工程师证明?

java reverse-engineering

4
推荐指数
3
解决办法
2680
查看次数

如何确定用于构建特定Windows桌面应用程序的框架?

如何确定使用哪种平台或编程语言来构建特定的Windows桌面应用程序?

frameworks reverse-engineering

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

Hibernate工具基于mysql db创建基本映射

有没有可以查看数据库并生成基本映射文件的工具?

如果可以使用数据库,并使用注释创建实际模型(java类),但不确定是否存在,那将会很棒?

java orm hibernate reverse-engineering

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

冗余组装说明?

最近我一直在努力学习逆向工程.因此,我一直在研究很多汇编代码.我对以下内容感到困惑:

movq    %rax,0xf8(%rbp)
movq    0xf8(%rbp),%rax
Run Code Online (Sandbox Code Playgroud)

我已经好几次见过这个了.这不是多余的吗?为什么编译器会这样做?我正在看的二进制文件是用gcc编译的.

x86 assembly gcc reverse-engineering

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

是否可以在不使用co_code的情况下获取python字节码?

假设我在python解释器中并定义一个函数如下:

def h(a):
  return a
Run Code Online (Sandbox Code Playgroud)

如果我想查看字节码(不是使用dis的反汇编),我通常可以使用h.func_code.co_code.有没有其他方法来查看字节码?

例如,在解释器中,如果我只是在h不进行函数调用的情况下键入,我会得到函数的地址.我可以使用该地址来获取字节码吗?还有其他方法吗?

评论中的一些其他信息:

该应用程序是用python编写的,并使用Py2App,cx_freeze或py2exe之类的东西打包.我在可执行文件上玩了一些技巧,现在,在启动时,可执行文件将我转储到python命令行.从那里,我手动将我的功能h输入到interepeter中.

的其他属性h.func_code都存在,如co_varnames,co_argcount等,但co_code并非如此.

如果我输入h.func_code.co_code翻译,我得到'code' object has no attribute 'co_code'.

更新:再次发表评论.据我所知,操作码已重新映射为随应用程序一起提供的python解释器.

python bytecode reverse-engineering

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

有没有办法在32位寄存器指令中立即保持字大小

假设以下x86-32指令:

add ebx,1
Run Code Online (Sandbox Code Playgroud)

有(至少)两种方法来组装这个操作码:

81 c3 01 00 00 00
Run Code Online (Sandbox Code Playgroud)

要么

83 c3 01
Run Code Online (Sandbox Code Playgroud)

第一个保持1作为4字节dword,第二个保持1作为字节

是否有一个指令将1保持为2个字节?如果没有原因?

x86 assembly reverse-engineering nasm

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

任何人都可以使用任何Java应用程序的代码吗?

任何类文件都可以相对容易地反编译为原始的Java源代码.

这是否意味着任何Java程序的源代码,除非以某种方式加密,对于拥有最终程序的任何人来说都相对容易获得?

如果是这样,对于那些不希望任何人可以获得商业秘密或工作的大公司来说,这不是一个问题吗?

java bytecode reverse-engineering class

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

在C中消息开头用CRC哈希计算CRC32

我需要计算消息的CRC并将其放在此消息的开头,以便带有"prepended"补丁字节的消息的最终CRC等于0.我能够在几篇文章的帮助下很容易地做到这一点,但不是我的具体参数.问题是我必须使用给定的CRC32算法来计算内存块的CRC,但是我没有那个"反向"算法来计算那4个补丁字节/'种类的CRC'.给定CRC32算法的参数是:

  • 多项式:0x04C11DB7
  • Endianess:big-endian
  • 初始值:0xFFFFFFFF
  • 反映:错误
  • XOR输出:0L
  • 测试流:0x0123,0x4567,0x89AB,0xCDEF导致CRC = 0x612793C3

计算CRC的代码(半字节,表驱动,我希望数据类型定义不言自明):

uint32 crc32tab(uint16* data, uint32 len, uint32 crc)
{
    uint8 nibble;
    int i;
    while(len--)
    {
        for(i = 3; i >= 0; i--)
        {
            nibble = (*data >> i*4) & 0x0F;
            crc = ((crc << 4) | nibble) ^ tab[crc >> 28];
        }
        data++;
    }

    return crc;
}
Run Code Online (Sandbox Code Playgroud)

需要的表是(我认为short [16]表应该包含大[256]表中的每个第16个元素,但是这个表实际上包含了 16个元素,但这就是它提供给我的方式):

static const uint32 tab[16]=
{
    0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9,
    0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005,
    0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, …
Run Code Online (Sandbox Code Playgroud)

c crc32 reverse-engineering

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

"实际逆向工程"中的代码列表是否包含错误,或者我是否误解了循环结构?

我最近开始学习装配以进行逆向工程.我正在阅读实用逆向工程,并在那里看到这个汇编代码:

loop_start:    
  mov eax, [edi+4]
  mov eax, [eax+ebx*4]
  test eax, eax
  ... //They also did the dots here
  jz short loc_7F627F
loc_7F627F:
  inc ebx
  cmp ebx, [edi]
  jl short loop_start
Run Code Online (Sandbox Code Playgroud)

然后他们告诉我们这个信息应该给我们一个想法,把它反编译成这个(我正在做他们所做的所有点):

typedef struct _Foo
{
  DWORD size;
  DWORD array[...];} FOO, *PFOO;

  PFOO bar= ...;

  for(i= ...; i < bar->size; i++)
  {
    if(bar->array[i] != 0){
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

但随着jz short loc_7F627F只会跳,如果EAX的含量为零不应该的...是之后jz,而不是之前jz?否则这将意味着我测试内容eax,是否为零,然后做一些未知的东西,然后跳转,如果它是零(假设没有其他指令包含在...影响ZF标志),这似乎不匹配C - 他们写的代码.

x86 assembly reverse-engineering

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

反向设计一个虚拟方法,该方法仅在返回之前对EAX的低字节进行异或

我需要帮助从反汇编逆向工程虚拟方法.该代码最初使用Microsoft的Visual C++编译.有问题的方法如下:

sub_92D110    proc near
xor al, al
retn
sub_92d110    endp
Run Code Online (Sandbox Code Playgroud)

这个方法在很多类之间引用,甚至在一个类的vtable内多次引用.我不确定它的作用; 这是否意味着该方法被内联,但调用仍然保持vtable保持其大小?

如果是这样,那该怎么xor al, al办?我是否误解了召唤大会或其他什么?

c++ x86 assembly reverse-engineering

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

标签 统计

reverse-engineering ×10

assembly ×4

x86 ×4

java ×3

bytecode ×2

c ×1

c++ ×1

class ×1

crc32 ×1

frameworks ×1

gcc ×1

hibernate ×1

nasm ×1

orm ×1

python ×1