这是为了扩展问题:帮助逆向工程二进制文件格式的工具
是否有任何公开可用的工具使用群集和/或数据挖掘技术来反向工程文件格式?
例如,使用该工具,您将拥有一组具有相同格式的文件,并且该工具的输出将是通用结构?
file-format pattern-recognition artificial-intelligence reverse-engineering cluster-analysis
我有一个ELF 32位动态链接,剥离文件,我想调试.尝试在地址处设置断点时,会显示一条消息,指出未加载符号表.
我的问题是:
stripped正是发生了什么?所以我意识到我可以在IDA Pro中打开一个二进制文件并确定段开始/停止的位置.可以在Cocoa运行时确定这个吗?
我假设有一些c级库函数可以实现这一点,我在马赫标题中戳了一下但找不到多少:/
提前致谢!
正在做一个破解,试图写一个keygen,我对一些FPU指令感到困惑.
fild qword ptr ss:[esp] ; loads 4275451536.0000000000 into ST0. ESP has FED63690
lea esp, dword ptr ss:[esp+8]
fstp qword ptr ss:[ebp-410] ; loads D2000000 into ebp - 410
fld qword ptr ss:[ebp-410] ; loads 4275451536.0000000000 into ST0
fstp qword ptr ss:[esp+8] ; loads D2000000 into esp+8
Run Code Online (Sandbox Code Playgroud)
我想知道它弹出时如何将4275451536.0000000000转换为D2000000?
我正在尝试将2012 SQL Server的一部分工程转换为Microsoft Visio2010。views选项为灰色。这些视图是我要记录的过程不可或缺的一部分,没有它们,该图将无用。除了手动输入视图之外,还有其他人可以轻松解决吗?
如何在micorsoft sql server 2014中从现有数据库创建ERD?
ERD需要类似于: 
好吧,所以这是一个如此受欢迎的炸弹实验室,我现在正处于第5阶段,我只停留在两条线上.这是汇编代码:
Dump of assembler code for function phase_5:
0x08048e29 <+0>: push %ebx
0x08048e2a <+1>: sub $0x18,%esp
0x08048e2d <+4>: mov 0x20(%esp),%ebx
0x08048e31 <+8>: mov %ebx,(%esp)
0x08048e34 <+11>: call 0x804908b <string_length>
0x08048e39 <+16>: cmp $0x6,%eax
0x08048e3c <+19>: je 0x8048e43 <phase_5+26>
0x08048e3e <+21>: call 0x80493a5 <explode_bomb>
0x08048e43 <+26>: mov $0x0,%edx
0x08048e48 <+31>: mov $0x0,%eax
0x08048e4d <+36>: movzbl (%ebx,%eax,1),%ecx
0x08048e51 <+40>: and $0xf,%ecx
0x08048e54 <+43>: add 0x804a4a0(,%ecx,4),%edx
0x08048e5b <+50>: add $0x1,%eax
0x08048e5e <+53>: cmp $0x6,%eax
0x08048e61 <+56>: jne 0x8048e4d <phase_5+36>
=> 0x08048e63 <+58>: cmp …Run Code Online (Sandbox Code Playgroud) 我正在修改一个旧的放弃软件游戏,以获得无限生命.
具有该指令的地址dec ecx与其在.exe调试中的位置不同.
我记得我的一位老朋友告诉我,有一个公式可以通过.exe中的指令获得"真实"地址.作弊引擎给了我内存地址.我记得在数学公式中,我需要得到模块,在OllyDbg我得到它.但我不记得这个公式.有人知道那个数学公式怎么样?这个公式非常简单!还有另一种方法可以让文件位置永久修改.exe吗?
assembly reverse-engineering memory-address portable-executable cheat-engine
是否有可能伪造返回地址,ebp + 4.
我正在编写一个你会注入到游戏中的DLL,它会调用游戏函数来执行操作,但是我调用的函数会检查程序本身的返回地址,如果它在它的基础之外它会检测到它.
所以基本上有什么办法以任何方式伪造回复地址?
它的工作原理如下:
if ( (_BYTE *)retaddr - (_BYTE *)unusedPadding >= (unsigned int)&byte_A6132A )
{
dword_11E59F8 |= 0x200000u;
dword_162D06C = 0;
result = (void (*)())sub_51FEE0(dword_11E59FC, v5, (_BYTE *)retaddr - (_BYTE *)unusedPadding, ebx0, edi0, a1);
}
Run Code Online (Sandbox Code Playgroud) 我必须从旧版的Visual Basic软件中复制算法,而关于代码的一件事我不理解。
看来作者已经使用某种方式隐式地通过引用传递简单的数据类型,例如整数。我第一次认为这可能是原始软件中的错误,但第三次出现后,它似乎是故意的。
我无法运行和调试原始(VB6或更低版本)代码。并且在我尝试重现该行为(使用VB.NET)的每个简单代码示例中,除非明确使用ByRef,否则它始终按值传递。
我举了一个例子:
Option Explicit
Module VBModule
Public Sub Calculate(value)
value = value + 1
End Sub
Function Starter()
Dim value%
Call Calculate(value)
If value > 0 Then
Console.WriteLine("Success")
End If
Console.WriteLine(value)
End Function
Sub Main()
Call Starter()
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)
该代码取决于Sub value更改Calculate以达到“成功”。在原始项目中,如果不起作用,则有数百行代码将无法访问。
所以问题是,有没有办法value在仍然使用整数类型的情况下通过引用传递而不使用ByRef?还是我要完全理解的错误代码?
作者在代码库中的任何地方都没有使用显式的ByRef或ByVal语句。变量使用类型字符声明,但是子例程参数缺少类型声明。我不确定所使用的Visual Basic版本。在主文件中,第一个语句为VERSION 5.00。
当我在Visual Studio中打开代码时,参数的类型显示为Object。因此,Visual Studio知道我不知道的东西,或者仅仅是因为参数缺少类型声明。
我还拥有该软件的编译版本,其产生的结果看起来不错。因此,当我完成代码转录后,我至少可以对照原始结果进行检查。
assembly ×5
sql-server ×2
x86 ×2
basic ×1
byref ×1
cheat-engine ×1
cocoa ×1
database ×1
disassembly ×1
dll ×1
elf ×1
erd ×1
file-format ×1
gdb ×1
vb6 ×1
views ×1
visio ×1
visual-c++ ×1
x87 ×1
xcode ×1