36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

36.逆向分析实战03:x32dbg 深入研究逆向工程

逆向就是做实验研究,需要借助不同的工具,不同的环境,它可以让我们从不同角度认识一个事物,加深对它的理解。正所谓“横看成岭侧成峰,远近高低各不同。不识庐山真面目,只缘身在此山中。 ”

粗略动态分析逆向步骤演示

1.寻找真正的 main 入口点

图片[1]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

2.从上往下分析函数

首先粗略分析:先大概了解程序在做什么事

就像文章一样,我们先粗略阅读一下

图片[2]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

图片[3]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

图片[4]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

3.从上往下分析流程

图片[5]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

4.无关函数可以装作没看到

图片[6]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

图片[7]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

局部精细化分析

 

总结

如果我们要分析算法,肯定还是 IDA Pro 更直观一些,可以直接还原 C 代码

但是 x32dbg 仍然可以胜任,并从中锻炼强大的反汇编分析能力

拓展:局部代码还原

为了能在后期更方便的理解代码逻辑,可以尝试对局部代码进行还原

以能够在日后逆向工作中用到的时候,可以直接拿来翻阅

以循环反汇编为例

mov eax,dword ptr ss:[ebp-C]
add eax,1
mov dword ptr ss:[ebp-C],eax
mov eax,dword ptr ss:[ebp-C]
cmp eax,dword ptr ss:[ebp-18]
jge re逆向算法.E3944B
mov eax,dword ptr ss:[ebp-C]
movsx ecx,byte ptr ss:[ebp+eax-34]
mov edx,dword ptr ss:[ebp-5C]
add edx,dword ptr ss:[ebp-C]
movsx eax,byte ptr ds:[edx]
xor ecx,eax
mov edx,dword ptr ss:[ebp-C]
mov byte ptr ss:[ebp+edx-50],cl
jmp re逆向算法.E3941E
char InputKey[20]; //假如长度是20
char* XiaodiLaoshi = "xiaodilaoshi"
char OutKey[20]; //假如长度是20

for (int i = 0;i < strlen(InputKey);i++)
{
    OutKey[i] = InputKey[i] ^ XiaodiLaoshi[i]
}

strcmp(OutKey,"123456789")

图片[8]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网

 

请登录后发表评论

    没有回复内容