逆向就是做实验研究,需要借助不同的工具,不同的环境,它可以让我们从不同角度认识一个事物,加深对它的理解。正所谓“横看成岭侧成峰,远近高低各不同。不识庐山真面目,只缘身在此山中。 ”
粗略动态分析逆向步骤演示
1.寻找真正的 main 入口点
![图片[1]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/30cb481428b8499e562ffd27f38aa5c7fa8b85633d24cf0d7c11fd894837d03fd039db18343ce090f782883e2ff625c9?pictype=scale&from=30013&version=3.3.3.3&fname=1%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
2.从上往下分析函数
首先粗略分析:先大概了解程序在做什么事
就像文章一样,我们先粗略阅读一下
![图片[2]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/b0da88a7d05018343a49fdb13027866da2537f4682200eb2edac2ed2af793beaa9546539617668cc17af4e2fb164405f?pictype=scale&from=30013&version=3.3.3.3&fname=2%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
![图片[3]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/c55d0b4aa2ccd7e9835f106baa5906e9e1401262b3249f7b7ace9fd9a16998f2379814996af2ce890cfbd599ba4ba0b2?pictype=scale&from=30013&version=3.3.3.3&fname=3%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
![图片[4]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/3bba4d21ee0207871b8a312f1aab92df31dd6fb3a8311ebd4dd9a989db0409438ee052d7f8978b9f593a62edfbc63a62?pictype=scale&from=30013&version=3.3.3.3&fname=4%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
3.从上往下分析流程
![图片[5]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/faa53259094406995580943bbf5966445452b9cd2552269d969efe077486fbda95482a9b043d8851b5cf47341429b48f?pictype=scale&from=30013&version=3.3.3.3&fname=5%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
4.无关函数可以装作没看到
![图片[6]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/08d88246395310f6907c7f542ec362765db9d7677e8c4fda73fd89cd3c1130e09770a338513da86cc6456f041a616055?pictype=scale&from=30013&version=3.3.3.3&fname=6%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
![图片[7]-36.逆向分析实战03:x32dbg 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/ae5a219eaade1b78f67331ff9ebbd260f92535ba5d6cd51661ac266296228997e8a219298f88f4d1c279810f36364a8e?pictype=scale&from=30013&version=3.3.3.3&fname=7%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)
局部精细化分析
总结
如果我们要分析算法,肯定还是 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 深入研究逆向工程-汇编语言社区论坛-技术社区-学技术网](https://picabstract-preview-ftn.weiyun.com/ftn_pic_abs_v3/ac54c34b7d0b5654a5b499a03dc19795657f1704ad90001c1beb5284e9628a04017670e7f5cf3dc4d5146c200ef28eb8?pictype=scale&from=30013&version=3.3.3.3&fname=15%E6%B0%B4%E5%8D%B0%E7%89%88.jpg&size=750)



没有回复内容