标签: reverse-engineering

用于mysql的开源ER图表工具

我想逆向工程(导入图表形式)我拥有的数据库的数据库定义转储,然后因为在这个特定的数据库中没有定义外键,我希望能够手动创建表到表键映射(使用乌鸦如果可能的话,表示符号).

我看了一下MySQL Workbench,它让我获得了85%的成功率.虽然不会出现漂亮的小关系线,但自动排列很糟糕.快速搜索谷歌会出现其他几个选项,所以我可以自己评估这些,但是:

我可以从你们那里得到一些反馈,你最喜欢哪种工具用于这种情况?为什么你喜欢那个(你的)特殊工具?

我的目的是获取遗留数据库,并训练jr.工程师组织数据库.视觉辅助工具很漂亮.我的后备选项是手动重新创建ER图.250+桌子不好玩.

mysql er-diagrams reverse-engineering

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

任何逆向工程师都有使用secureSWF的经验吗?

我正在写一个flash应用程序,我担心它会被反编译.为了尽量减少这种机会,我想混淆文件.

我听说过secureSWF(http://www.kindisoft.com/),他们确实列出了一些"用户评论".然而,这些都是如此乐观,以至于难以信任.没有一个悲观的评论(甚至不是例如用户界面或支持),所以有些东西告诉我他们可能不会发布所有评论.根据我的经验,即使是最好的公司也时不时会有某种批评.

那么,这里的任何逆向工程师都可以告诉我你在工作中的经验是多少 - 以及你是否设法对secureSWF混淆文件进行逆向工程?如果是这样,你需要多长时间?你会推荐这个软件吗?

非常感谢提前.

flash obfuscation reverse-engineering actionscript-3

8
推荐指数
3
解决办法
6798
查看次数

装配级功能指纹

我想确定两个可执行文件中的两个函数是否是从相同的(C)源代码编译的,并且即使它们是由不同的编译器版本或不同的编译选项编译的,也希望这样做.目前,我正在考虑实现某种汇编级功能指纹识别.函数的指纹应具有以下属性:

  1. 在不同情况下从同一来源编译的两个函数可能具有相同的指纹(或类似的指纹),
  2. 从不同的C源编译的两个函数可能有不同的指纹,
  3. (奖金)如果两个源函数相似,则指纹也相似(对于类似的一些合理定义).

我现在正在寻找的是一组编译函数的属性,它们分别满足(1.)并且希望也(2.).

假设

当然,这通常是不可能的,但可能存在一些在大多数情况下都能起作用的东西.以下是一些可以使其更容易的假设:

  • linux ELF二进制文件(不提供调试信息),
  • 没有任何混淆,
  • 由gcc编译,
  • 在x86 linux上(可以在其他架构上实现的方法会很好).

思路

不幸的是,我几乎没有组装经验.以下是上述属性的一些想法:

  • 函数中包含的指令类型(即浮点指令,内存屏障)
  • 来自函数的内存访问(它是否从堆读取/写入?堆栈?)
  • 调用库函数(它们的名称应该在ELF中可用;它们的顺序通常也不应该更改)
  • 控制流图的形状(我猜这将高度依赖于编译器)

现有工作

我只能找到相关的相关工作:


您对功能属性有什么建议吗?还是一个不同的想法也能实现我的目标?或类似的东西已经实施,我完全错过了吗?

c assembly executable reverse-engineering fingerprint

8
推荐指数
1
解决办法
757
查看次数

逆向工程的汇编语言

我应该选择NASM或MASM来学习装配.我想学习装配,动力是逆向工程.

因此,当我反汇编一些可执行文件时,我可以通过查看反汇编代码来理解代码.

更新:我认为我的自我清楚......我理解那些是汇编程序,但要理解反汇编程序的输出我需要知道汇编,这就是我要问从哪里开始的原因(使用MASM或NASM)

c++ x86 assembly reverse-engineering masm

8
推荐指数
1
解决办法
3925
查看次数

逆向工程串行命令

TL;博士;

我需要做的是逆向工程串行命令,以便我可以弄清楚如何将人类可读值或二进制值序列化为原始串行命令.

IE:

if
   66 = 'A1' or '0110 1'
   6e = 'A2' or '0110 2'
   e6 = 'B1' or '1110 1'
   ee = 'B2' or '1110 2'
then
   what is A3 or B3, etc.
Run Code Online (Sandbox Code Playgroud)

我正在开发一个开源自动化项目的包装器.

有一种发送raw命令的方法,理论上将多个命令串在一起.
我嗅了几个串行命令,这就是它们的样子.

[init] [HouseCode | DeviceCode] [ready] [HouseCode | FunctionCode]   

04 66 06 62       // A1 ON
04 6e 06 62       // A2 ON 
04 62 06 62       // A3 ON
04 6a 06 62       // A4 ON …
Run Code Online (Sandbox Code Playgroud)

c# hex serial-port reverse-engineering x10

8
推荐指数
1
解决办法
663
查看次数

方法调整私有框架iOS API

我知道有很多关于方法调配的资源.但是,是否可以从私有API中调用方法?问题是没有头文件.我想在PrivateFramework中调用私有类中的方法,例如(随机示例)Message.framework方法

这是个人测试,我知道它会被Apple拒绝遗忘.

reverse-engineering objective-c iphone-privateapi ios

8
推荐指数
1
解决办法
2500
查看次数

这段翻译的汇编代码有什么更重要的意义吗?

对于CS体系结构中的简短家庭作业,我们将以下IA-32程序集转换为C.我已正确翻译它(据我所知),但代码似乎没有做任何特别有用的事情.我的教授通常会给我们这样的问题,最终会做一些事情:像我这样的最后一个任务就是pop_count.看下面的C代码,这个函数有用吗?有些算法可能吗?

代码如下所示(我已为每条ASM行添加了注释).

// The following variables x, y, z are located at (%ebp) +8, +12, +16 respectively
// x, y, and z, are scanned from the terminal and passed into the function

   movl 12(%ebp), %edx                  // moves long y to register %edx
   subl 16(%ebp), %edx                  // subtracts longs: y = y - z
   movl %edx, %eax                      // moves long y to register %eax
   sall $31, %eax                       // left shift all bits in long y by 31 places 
   sarl …
Run Code Online (Sandbox Code Playgroud)

c algorithm x86 assembly reverse-engineering

8
推荐指数
1
解决办法
104
查看次数

React-Native 应用程序逆向工程和混淆

react-native expo 生成的 apk 是否被混淆?

exp build:android
Run Code Online (Sandbox Code Playgroud)

如何使用该 apk 取回我的 React Native JS 源代码?为此,我是否需要 dex 到 Java 编译器?

寻找您的宝贵建议,因为我担心我的 React Native 应用程序的安全性并试图比较混淆代码与非混淆代码

reverse-engineering apk react-native react-native-android expo

8
推荐指数
1
解决办法
4870
查看次数

拆解二元炸弹第三阶段逻辑难理解

我有来自二进制炸弹实验室的以下汇编程序。目标是确定在不触发explode_bomb函数的情况下运行二进制文件所需的关键字。我评论了我对这个程序的程序集的分析,但我无法将所有内容拼凑在一起。

我相信我有我需要的所有信息,但我仍然无法看到实际的底层逻辑,因此我被卡住了。我将不胜感激任何帮助!

以下是反汇编的程序本身:

0x08048c3c <+0>:     push   %edi
   0x08048c3d <+1>:     push   %esi
   0x08048c3e <+2>:     sub    $0x14,%esp
   0x08048c41 <+5>:     movl   $0x804a388,(%esp)
   0x08048c48 <+12>:    call   0x80490ab <string_length>
   0x08048c4d <+17>:    add    $0x1,%eax
   0x08048c50 <+20>:    mov    %eax,(%esp)
   0x08048c53 <+23>:    call   0x8048800 <malloc@plt>
   0x08048c58 <+28>:    mov    $0x804a388,%esi
   0x08048c5d <+33>:    mov    $0x13,%ecx
   0x08048c62 <+38>:    mov    %eax,%edi
   0x08048c64 <+40>:    rep movsl %ds:(%esi),%es:(%edi)
   0x08048c66 <+42>:    movzwl (%esi),%edx
   0x08048c69 <+45>:    mov    %dx,(%edi)
   0x08048c6c <+48>:    movzbl 0x11(%eax),%edx
   0x08048c70 <+52>:    mov    %dl,0x10(%eax)
   0x08048c73 <+55>:    mov    %eax,0x4(%esp)
   0x08048c77 <+59>:    mov    0x20(%esp),%eax …
Run Code Online (Sandbox Code Playgroud)

c x86 assembly reverse-engineering att

8
推荐指数
1
解决办法
578
查看次数

如何修补第 3 方 .so 文件以访问非导出符号 (C++)

我有一些.fic专有格式的二进制文件,我有一个wd250hf64.so来自该供应商的包含 C++ 方法的文件 CComposanteHyperFile::HExporteXML(wchar_t* const path)

我可以使用 nm 看到

$ nm  --demangle   wd250hf64.so  --defined-only 


0000000000118c90 t CComposanteHyperFile::HExporteXML(wchar_t const*)
Run Code Online (Sandbox Code Playgroud)

未损坏的版本_ZN20CComposanteHyperFile11HExporteXMLEPKw与我使用本地 g++ 版本的版本相同

雷德夫给出

readelf -Ws wd250hf64.so  | grep _ZN20CComposanteHyperFile11HExporteXMLEPK

 19684: 0000000000118c90   119 FUNC    LOCAL  DEFAULT   11 _ZN20CComposanteHyperFile11HExporteXMLEPKw

Run Code Online (Sandbox Code Playgroud)

现在我尝试编写一个非常简单的程序

$ nm  --demangle   wd250hf64.so  --defined-only 


0000000000118c90 t CComposanteHyperFile::HExporteXML(wchar_t const*)
Run Code Online (Sandbox Code Playgroud)

但是当我用它编译时g++ toto.cpp -L. -l:wd250hf64.so

我有toto.cpp:(.text+0x10): undefined reference to 'CComposanteHyperFile::HExporteXML(wchar_t const*)'

我没有更多的运气dlopen

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>

int
main(int argc, char **argv)
{
    void *handle; …
Run Code Online (Sandbox Code Playgroud)

c++ reverse-engineering ld readelf nm

8
推荐指数
1
解决办法
923
查看次数