标签: reverse-engineering

反编译.NET 2.0二进制文件

是否可以将.NET 2.0二进制文件(*.exe)反编译为某种可读代码?或者如果没有,只需从中提取一些信息(例如方法名称,调试信息等)?

.net decompiling reverse-engineering

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

如果您有 dSYM,可以对 .ipa 文件进行逆向工程吗?

某些代码分析工具要求您将 .ipa 与 .dSYM 文件一起提交。

将 .dSYM 文件与 .ipa 一起发送是否存在应用程序逆向工程的风险?我的意思是,如果有人同时拥有 .ipa 和 .dSYM,他能获得源代码吗?

reverse-engineering objective-c ios ipa dsym

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

用于生成 C++ 代码轮廓/地图的工具 - 有这样的东西吗?

我需要对用 C++ 编写的软件组件进行一些修改。我幻想着生成一些代码映射,这将显示类之间的关系并引导我完成方法的流程/调用图。有这个工具吗?

几年前,我使用 Rational Rose 建模工具,它具有对代码进行逆向工程并为其构建类图的功能。然而,对于此类项目探索重要的是一些动态信息,如序列图(理想情况下)或调用图。更不用说 Rose 对于这样的一项临时任务来说太大了,实际上我不知道它是否仍然存在。

c++ oop reverse-engineering

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

需要帮助反编译jar文件,编辑一个类,并保存为jar文件

我有一个jar文件,我需要编辑一个特定的类并将其保存回jar文件中.我尝试了不同的反编译器,但我无法保存回jar.

我尝试使用Eclipse和JADCLIPSE进行反编译.通过使用它,我可以看到反编译的类文件,但我无法编辑它.有谁可以帮我解决这个问题?

java reverse-engineering executable-jar decompiler

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

Laravel 从数据库或迁移脚本生成模型、视图和控制器

我是 Laravel 4 的新手。我想知道是否可以从现有数据库生成模型、视图和控制器?我用谷歌搜索并发现

https://github.com/JeffreyWay/Laravel-4-Generators
Run Code Online (Sandbox Code Playgroud)

但是它允许通过提供资源名称来生成迁移脚本、模型、视图和控制器,因为我想在其中通过命令行逆向工程我想从现有数据库创建模型、视图和控制器。

controller views reverse-engineering models laravel

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

如何在没有它们的情况下获取GetProcAdress和LoadLibrary?

假设我没有导入.lib库,我希望通过手动编写调用(如汇编或纯c)中的所有操作

GetProcAdress LoadLibrary是winapi dll的一部分一般来说,加载dll并获取指向函数的指针,我需要调用这两个,但是因为我没有得到它们我可以使用它来获取它们?

这有点像悖论,可能它可以通过其他一些机制解决,但在这里我缺乏知识表明,我不知道这个机制是什么,有人能解释一下吗?

c windows dll winapi reverse-engineering

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

注册用法跟踪x86

我有一个应用程序的汇编指令列表,我想知道哪些寄存器可以免费使用,以及在列表的任何索引处使用了哪些寄存器.

如何知道寄存器何时被使用以及何时被释放(可以再次使用)?我的目标是到达真正免费的寄存器.

这是我解决问题的假设,因为我对装配知识如此有限,所以听起来可能很愚蠢.

术语:读(源),写(目标)

  1. 将所有指令标记为每个寄存器的WRITES TO或READS FROM(使用http://ref.x86asm.net/coder32.html获取此处所述的所有信息).
  2. 跟踪对寄存器的所有读写操作,并找出何时可以免费使用.例:
    • 寄存器X由5处的指令写入.
    • 寄存器X正在被8处的指令读取.
    • 寄存器X由15处的指令写入.
    • 然后我可以说寄存器X没有在8-15之间被读取并且在15处被重新分配.这意味着它在指令8和15之间是空闲的但是在5-8之间忙.

它能解决问题还是有意义?我也对其他解决方案持开放态度.

评论后更新:

我看到JMPS /调用/条件移动搞砸了所有这些.只是为了保证它的安全(安全=自由寄存器真的是免费的),做这样的事情怎么样:当我看到每个跳转/调用/条件移动到外面时,我将所有寄存器标记为"正在读取",最大程度上是悲观的哈罗德描述的假设.我相信在这种情况下我会有更安全的结果,即使它不会很好,因为寄存器大部分时间都处于繁忙状态.您是否同意我的结果会以这种方式安全?

说明:

  • 1指令:写入寄存器X.
  • 3指令:条件JMP/MOV/CALL.
  • 5指令:写入寄存器X.
  • 8指令:从寄存器X读取.
  • 15指令:写入寄存器X.

结果:

  • 在1-3之间:寄存器X正忙,因为我在3处读取外部重新定位为READ.
  • 在3-5之间:寄存器X是免费的,因为不再读取.
  • 在5-8之间:寄存器X忙,因为在8处有读操作.
  • 8-15之间:注册X是免费的.

更新2

我会将应用程序拆分为基本块,其中每个块代表跳转(也是条件),调用和返回之间的一大块代码.跳转语句将是块的结尾.然后,我将分析每个块,假设所有寄存器在开始时都在使用.我可能会错过很多免费的寄存器,但当我得到一个,我会知道那个是真的免费的=)

更新3

我仍在尝试根据反馈改进解决方案(感谢哈罗德).

我已经阅读了活体分析,据我所知,建议从应用程序的最后分析到开始.但我不知道在编译程序集中应用程序的结束,如下面的评论中提到的停止问题,所以我将对未来的分支进行相反的处理.

  1. 按照描述标记所有说明.读=源,写=目的地.条件移动计为读取到源并写入目标.
  2. 将所有指令分成块.使用任何条件或直接分支出口拆分它们.
  3. 将所有块链接到彼此,每个块都有may_continue_with容器,该容器保存指向它可能继续的分支的指针.
  4. 如果寄存器X在A索引处是空闲的,请询问一个块.块检查在索引A之后是否首次访问寄存器X是读取还是写入操作.首先,它检查自己的指令,如果它没有找到在寄存器上运行的任何指令,它会向未来的分支询问相同的问题.(未来的分支会进一步询问他们是否没有任何访问寄存器X的指令).该块返回:
    • 如果任何未来的分支首先具有读访问权,则为 false
    • 如果所有未来的分支首先具有写访问权限,则为 true(只有一个分支不够,因为我们不知道将执行哪个分支).

x86 assembly reverse-engineering cpu-registers

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

32位PPC rlwinm指令

我在理解rlwinmPPC汇编指令时遇到了一些麻烦(旋转左字立即然后和屏蔽).

我试图扭转这部分功能

rlwinm r3, r3, 0, 28, 28
Run Code Online (Sandbox Code Playgroud)

我已经知道是什么了r3.r3在这种情况下是一个4字节的整数但我不确定这条指令到底rlwinm是做什么的.

顺便说一下,这是在32位机器上.

c++ assembly reverse-engineering powerpc instruction-set

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

反向按位运算符

逆向工程:

是否可以编写一些python代码来获取未知的c变量值!
方程:(((ord(c) << 5) | (ord(c) >> 3)) ^ 111) & 255 = 233

这是我的逻辑:

  1. ord(c)<<5 = a这会给我们ord(c) = a >> 5的话c = chr(a >> 5)
  2. 通常(ord(c) << 5) | (ord(c) >> 3))会回来 (ord(c) << 5)
  3. & 做一个"按位和",但是&不可逆.

如果有人帮助我,找出并解决方程,我会很高兴的.
这就是整个问题的pastebin链接

python reverse-engineering

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

试图对一个函数进行反向工程

我试图更多地了解x86中的汇编.我在这里有一个神秘的功能,我知道它会返回int并接受一个int参数.所以它看起来像int mystery(int n){}.但我无法弄清楚C中的功能.大会是:

mov  %edi, %eax
lea  0x0(,%rdi, 8), %edi
sub  %eax, %edi
add  $0x4, %edi
callq < mystery _util >
repz retq

< mystery _util >
mov  %edi, %eax
shr  %eax
and  $0x1, %edi
and  %edi, %eax
retq
Run Code Online (Sandbox Code Playgroud)

我不明白lea在这里做了什么,它可能是什么样的功能.

c x86 assembly reverse-engineering att

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