linux 自修改代码 smc,记一次逆向工程作业——SMC代码自修改程序的逆向分析

本文介绍了通过IDA分析7-3.exe程序的逆向工程过程,重点解析了SMC代码自修改的部分。通过分析汇编代码,揭示了程序对flag的验证逻辑,包括长度检查、特定字符判断、Base64解码以及变量间的运算关系。最终成功解密出flag{The_realCtF_just_B3g!n}。文章强调在逆向工程中理解数据存储方式、灵活运用汇编和伪代码的重要性。
摘要由CSDN通过智能技术生成

第一次发帖,由于刚开始学习逆向工程,所以文中可能有些错误或者描述不完善的地方,欢迎大家在评论中批评指正或者提出问题进行讨论。

环境

主机:Windows10 64位 专业版

虚拟机软件:VMWare 15.1.0
虚拟机环境:Windows XP

软件:IDA VSCode Notepad++

编程语言:Python3 C/C++

文件:7-3.exe SMC.idc

2b1bef8df4f01fee4fc8b39358cdcfb3.gif

SMC.zip

(30.98 KB, 下载次数: 9)

2020-5-22 14:55 上传

点击文件名下载附件

下载积分: 吾爱币 -1 CB

概览

使用IDA打开7-3.exe,查看程序逻辑,并对部份意义明确的变量重命名,以便分析。

c902b521eb918e4b2ccb62d429a3393d.png

0x01

首先分析开头的汇编程序可知,程序在一开始要求用户输入字符串,即flag,对输入的flag求取长度,当flag长度length=28(0x1C)时,程序跳转至loc_40107F

mov     edx, [ebp+length]

movsx   eax, [ebp+edx+var_69]

cmp     eax, '7Dh'  //'}'

jnz     short loc_4010DD

由上述可知,flag长度为28,并且最后一个字符为:}

ab0b08aea83ef5177e51b7ebcf55cdd1.png

0x02

在loc_40109E中

cmp     [ebp+var_70], 43h

jge     short loc_4010BC

显然,右侧框图为循环,并且var_70充当了计数的作用,对byte_414C3C进行了处理,通过相应的解密函数,我们可以得出解密的结果,可以看出,结果为一个函数,通过IDA的函数构建功能,我们可以得到sub_414C3C。

上述循环结束后,程序将byte_414C3C转化为sub_414C3C。在loc_4010BC中

mov     dword ptr [ebp-6Ch], offset sub_414C3C  //转化后汇编代码,截图为转化前

mov     esi, esp

push    offset unk_414BE0

lea     edx, [ebp+flag]

push    edx

call    dword ptr [ebp-6Ch]

程序调用了解密出的函数sub_414C3C,传入了flag和unk_41

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值