在跳转中寻找混淆模式

逆向工程 去混淆
2021-07-03 03:17:00

我正在处理一个混淆的二进制文件。我认识到一些模式用于混淆反汇编器,一些用于混淆函数调用,一些用于条件跳转等等。

这个想法是沿着二进制搜索这些模式。问题是这种模式经常与无条件跳转交织在一起。

例如,此代码用于替换简单的条件跳转:

push    offset loc_123456
push    ebx
push    eax
mov     ebx, [esp+8]
mov     eax, offset loc_654321
cmovz   ebx, eax
mov     [esp+8], ebx
pop     eax
pop     ebx
retn

问题是这个模式经常被分割成两部分或更多部分(因为整个代码被分割成几个块,散布在二进制中的任何地方,然后用无条件跳转连接),当然我不能用简单的字节找到它模式搜索。

有没有办法寻找满足模式的所有代码段,即使它们被分成 2 个(或更多)段并与无条件跳转连接?

0个回答
没有发现任何回复~