BugkuCTF-Reverse题Easy_vb多方法解决

这篇博客探讨了如何分析一个未加壳的VisualBasic程序,介绍了三种方法:直接修改字符串,使用IDA进行静态分析,以及通过OD动态调试。这些技术对于理解程序行为和逆向工程至关重要。

先查壳:
在这里插入图片描述
我们可以看到这个是Visual Basic 编写的程序,因此,这个是没有加壳的VB程序。

方法一:

在这里插入图片描述
MCTF{N3t_Rev_1s_E4ay}改为flag{N3t_Rev_1s_E4ay}

方法二:

IDA,F5
在这里插入图片描述

方法三:

OD打开文件
智能搜索:
在这里插入图片描述

这两个代码片段的主要差异在于 `if` 条件的判断逻辑部分,具体如下: ### 第一个 `if` 语句: ```c if ((reverse_bytes_long(version_254) < reverse_bytes_long(pfwhead->Version_prv)) || ((version_prv == pfwhead->Version_prv) && ((reverse_bytes_long(version_254) < reverse_bytes_long(pfwhead->Version_254)) || (version_306 < pfwhead->Version_306))) || (reverse_bytes_long(version_254) == BRIDGE_VER)) ``` **判断逻辑说明:** 1. `reverse_bytes_long(version_254) < reverse_bytes_long(pfwhead->Version_prv)` 判断 `version_254` 是否小于 `pfwhead->Version_prv`(反转后的比较)。 2. 如果 `version_prv == pfwhead->Version_prv`,则进一步判断: - `reverse_bytes_long(version_254) < reverse_bytes_long(pfwhead->Version_254)` 或者 - `version_306 < pfwhead->Version_306` 3. 最后判断 `reverse_bytes_long(version_254) == BRIDGE_VER` ### 第二个 `if` 语句: ```c if ((reverse_bytes_long(version_prv) < reverse_bytes_long(pfwhead->Version_prv)) || ((version_prv == pfwhead->Version_prv) && ((reverse_bytes_long(version_254) < reverse_bytes_long(pfwhead->Version_254)) || (version_306 < pfwhead->Version_306))) || (reverse_bytes_long(version_254) == BRIDGE_VER)) ``` **判断逻辑说明:** 1. `reverse_bytes_long(version_prv) < reverse_bytes_long(pfwhead->Version_prv)` 判断 `version_prv` 是否小于 `pfwhead->Version_prv`(反转后的比较)。 2. 如果 `version_prv == pfwhead->Version_prv`,则进一步判断: - `reverse_bytes_long(version_254) < reverse_bytes_long(pfwhead->Version_254)` 或者 - `version_306 < pfwhead->Version_306` 3. 最后判断 `reverse_bytes_long(version_254) == BRIDGE_VER` ### 差异总结: 1. **第一个条件不同:** - 第一个 `if` 判断的是 `reverse_bytes_long(version_254)` 是否小于 `reverse_bytes_long(pfwhead->Version_prv)`。 - 第二个 `if` 判断的是 `reverse_bytes_long(version_prv)` 是否小于 `reverse_bytes_long(pfwhead->Version_prv)`。 2. **其余条件相同:** - 两个 `if` 的第二部分和第三部分逻辑完全一致。 ### 结论: 两个 `if` 语句的判断逻辑在第一个条件上有显著差异,这会导致在某些情况下触发条件的结果不同。第一个 `if` 更关注 `version_254` 和 `Version_prv` 的关系,而第二个 `if` 更关注 `version_prv` 和 `Version_prv` 的关系。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值