吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1423|回复: 4
收起左侧

[原创] lena151的教程第五课:VisualSite Designer的分析

[复制链接]
yoeng 发表于 2025-12-8 19:49
大家好,我是一枚新人,最近学习逆向想输出点东西,于是就有了这篇文章。
在十多年前中,有一位伟大的逆向工程师无偿地制作了数十个cm并同时制作了相应的教学视频,这位互联网逆向活菩萨就是lena151。lena151制作的教学视频有着循序渐进的特征,我今天这篇文章就对应着lena151制作的第五节课程的相关内容。(在文章的最后我会附上lena151部分课程的下载链接,我也是从这个渠道下载的)
必须说在前面,本人也是一名逆向小白,这篇文章更多是为和我差不多水平的朋友提供一个操作参考,文章中一部分内容也只是知其然而不知其所以然,如果有表述不恰当的地方,欢迎大家批评指正。
打开附件,是一个很久之前的一个软件,打开文件发现是未注册版本,使用次数消耗完之后就无法使用了。
因为我习惯使用xdbg进行动调,但是恰好有一项功能(animate over)是olly有但是xdbg没有的,所以之后的操作会出现olly和xdbg的混用。
根据lena151的教学视频,使用olly的animate over功能,不断执行【自动步进执行某个函数后跳出程序页面-在该处设置断点-重新启动程序-执行到断点后步进-自动步进执行某个函数后跳出程序页面】这样的操作,直到某一个函数调用后你判断无需在步进了,就可以围绕代码进行分析。
base1.png
base2.png
需要注意的是,如果使用的是olly,在dll文件中设置断点得设置硬件断点(Hardware Breakpoint),因为olly默认不会保存Windows dll文件的软件断点,但是使用x32dbg就不会这样。
setHB.png
多运行几遍就会发现,第三次步进之后,如果次数没使用完,执行489912处代码会跳出程序页面;如果次数已经用完,执行4899B3处代码会跳出程序页面。同时两处代码都是call <JMP.&Ordinal#2514>;我们可以推测<JMP.&Ordinal#2514>就是弹窗函数,设置的参数不同显示的内容也就不同。除此之外,在测试的过程中,我们也能发现执行完489A49之后会打开程序的主页面。
借助x32dbg的流程图功能我们可以做出一张简易版的流程图来分析程序的运行逻辑。
treemap.png
4898F1处判断还有无剩余次数,没有则跳转到489998处,执行4899B3处的弹窗函数;有则执行489912处的弹窗函数。执行完<JMP.&Ordinal#2514>(弹窗函数)之后,如果eax(返回值)为1(但是返回值代表什么意思不清楚),则跳转到489A24处执行程序打开流程(会运行到489A49);否则跳转到4899D3执行程序退出流程。
我们再将目光放在4898F1上面的两条跳转语句:004898E1:jne visualsite designer.489A29以及004898D3:je visualsite designer.4899D8。
其中004898E1存在一种情况直接跳转到489A29(相当于跳过所有的弹窗直接打开程序),可以推测该判断语句判断是否已经购买程序;
004898D3存在一种情况直接跳转到4899D8(相当于直接退出程序),推测是程序开启之前的某种自检判断

到目前为止,已经有思路可以绕过使用次数限制了:
一、直接跳过未购买检测流程:修改004898E1:jne visualsite designer.489A29为004898E1:jmp visualsite designer.489A29
二、修改未购买检测逻辑(三种方法,但是都有一个问题就是无法避开弹窗,并且还会有额外的弹窗弹出,说明程序有另一处检测逻辑在运行):
        1、确保执行<JMP.&Ordinal#2514>后的eax总是1:不修改跳转指令,修改004899B3:call <JMP.&Ordinal#2514>为004899B3:mov eax,1
        2、将4898F1:jle visualsite designer.489998直接nop
        3、修改剩余次数(可以发现在判断有无剩余次数时,剩余次数值存放在eax中),将004898E7:mov eax,dword ptr ds:[edi+E4]修改为004898E7:mov eax,1
三、直接修改可执行文件中存储的剩余次数。004898E7:mov eax,dword ptr ds:[edi+E4]中edi+E4对应的地址是0058B314,通过计算相应的文件偏移直接在可执行文件中硬编码(还没有实操,只是有这个思路,不确定是否有可行性)

再之后是跳过关闭程序时的弹窗,lena151给出的方法是关闭主窗口,在广告弹窗弹出时,暂停程序,查看调用堆栈.(只需要关注用户模块的调用,至于为什么我也不知道)又发现了<JMP.&Ordinal#2514>,而且程序行为是弹窗,尝试发现果然是这个函数调用广告弹窗,nop掉之后就解决了
heapstack.png

好了,我的文章到这里就告一段落了,虽然内容不多,但是因为对xdbg和olly都不熟悉,所以分析这个程序还是花了相当一段时间,希望我这篇文章之后能帮助和我一样处境的小白节省时间

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lbdcyy 发表于 2025-12-10 10:37
一时看不懂,但让我想到了当年的游戏修改工具GB
 楼主| yoeng 发表于 2025-12-10 15:15
lbdcyy 发表于 2025-12-10 10:37
一时看不懂,但让我想到了当年的游戏修改工具GB

兄弟啥子看不懂?这篇帖子本来就是希望能被大多数小白理解,如果我能解答一定补充
hamfighter 发表于 2025-12-10 15:54
感谢分享,想问下楼主现在哪里能看到lena151的教程
 楼主| yoeng 发表于 2025-12-10 20:20
hamfighter 发表于 2025-12-10 15:54
感谢分享,想问下楼主现在哪里能看到lena151的教程

我文章底下是带链接的,但是可能规则不允许被删掉了,xd可以去tuts4you这个网站直接搜lena151,需要翻,但是这个网站是分享论坛,下载啥的不收费
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-18 08:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表