易语言破解之绕VM思路

本文介绍了三种方法来追踪易语言程序中的按钮事件特征码,包括通过EBP寄存器定位、重载内核DLL以及偏移量追踪。详细阐述了每种方法的步骤和实例,涉及OD调试器的使用、内存搜索、汇编代码修改等技巧,旨在帮助逆向工程师绕过VM保护,定位按钮事件函数。
摘要由CSDN通过智能技术生成

0x1追踪[EBP-4]

介绍

找到按钮事件特征码的位置,可以发现call调用的是[ebp-4]的值的位置,若找到[ebp-4]的值是从哪里来的,就算别人把按钮事件特征码整个给vm掉了,也能追踪到按钮事件特征码

实例

在按钮事件特征码附近有个beginprocessevent函数,在它下面有一个汇编是给将eax的值赋值给[ebp-4],而eax的值是从beginprocessevent函数返回的,当触发按钮操作后,eax的值是不等于0的,所以在下个条件断点

请添加图片描述

请添加图片描述

运行程序点击按钮,断点断下来后按enter进入call test.krnln_?BeginProcessEvent@CKrnl>,里面有许多个retn,在每个retn处都下断

请添加图片描述

点击运行程序,如果不触发按钮事件还能断下来的断点我们直接取消掉,直至找到按钮触发的断点

请添加图片描述

程序在retn处断下来后查看OD右边的寄存器窗口的eax值,此处eax的值为4010D8

请添加图片描述

eax的值就是[epb-4]的值,ctrl+G搜eax的值跳转到按钮事件特征码的函数头位置

请添加图片描述

提取retn断点处的特征码用于以后可直接追踪按钮事件特征码

8B 70 04 85 F6 74 4C 8B 54 24 18 85 ED 89 93 E4 01 00 00 74 12 8B C5 5F 89 83 E8 01 00 00 8B C6
5E 5D 5B 59 C2 10 00

请添加图片描述

0X2重载内核Dll

介绍

通常写易语言软件的作者都会将按钮事件特征码整段都给vm掉,但是他们忽略了一个点, 没有把按钮事件特征码其外层的call进行vm, 而这个外层call走的是易语言的内核函数

在按钮事件特征码的call下断点,查看右下角的堆栈窗口可找到外层call

请添加图片描述

鼠标右键反汇编窗口跟随,找到外层call test.krnln_?Notify@CKrnlApp@@QAEHHK>

请添加图片描述

请添加图片描述

进入这个call找到函数头部并提取特征码:64 A1 00 00 00 00 6A FF 68 ?? ?? ?? ?? 50 64 89 25 00 00 00 00 83 EC 10 53 55 8B 6C 24 28

请添加图片描述

实例

首先准备好易语言的dll文件来用作后续的dll注入,为了识别是否注入成功,这里写了一个信息框

请添加图片描述

将要破解的软件的按钮事件特征码给vm掉

请添加图片描述

请添加图片描述

将加完vm后的软件拖入OD,使用StrongOD插件注入dll,这里选择远程注入

请添加图片描述

请添加图片描述

在代码节搜索前面所记述的特征码,发现有两处,第一个地址为40ee20,第二个地址为9c19a4040ee20是程序本身的,9c19a40是注入的dll的

请添加图片描述

ctrl+G转到对应的地址,修改其汇编代码,将call 40ee20修改为call 9c19a40

请添加图片描述

通过查询模块窗口,发现这个9c19a40是在注入的dll的代码段的范围之内,然后双击这个dll进入它的代码段

请添加图片描述

搜索按钮事件特征码并下断点(其实就是在注入的dll下按钮事件特征码断点)

请添加图片描述

运行程序点击按钮,发现程序在刚刚下的断点断下了

请添加图片描述

F7单步步入这个call,这个call的地址就是真正的按钮事件函数,并没有任何的vm痕迹

请添加图片描述

0X3偏移量追踪按钮事件

介绍

新建一个易语言程序并将其拖入OD打开,二进制搜索FF 25转到易语言体处的第三个jmp下断

请添加图片描述

然后一路往下跟,跟到calltest.krnln_?LibInitUserProgram,F7进如此call

走到mov eax,dword ptr ds:[___eapp_info],并提取其特征: 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 81 EC AC 01 00 00

请添加图片描述

请添加图片描述

将此处的内存地址复制下来,到内存窗口里搜索此地址

请添加图片描述

请添加图片描述

在内存窗口找到第二行第四列所对应的地址550370,然后转到此地址处

请添加图片描述
请添加图片描述

在内存窗口里往下拉,直至可以看到左边的ascii窗口处有“按钮”字样,其实这是一个结构体,里面有些成员是用于追踪按钮事件的偏移量

怎么知道哪个是偏移量呢?有一个规律05…01…43,这个43就是偏移量,也就是说05…01再往后的值就是偏移量

请添加图片描述

回到反汇编窗口的易语言体处然后往上拉,找到nop下面的反汇编地址,此处地址是4010ac

注意:此处的反汇编代码是不固定的,不一定是pop esi,有时候是push ebp

请添加图片描述

计算4010ac + 43(偏移量) = 4010EF, 计算出的这个地址就是按钮事件的函数头部

请添加图片描述

实例

准备好一个vm好了的易语言程序,这里就不演示VM过程了

在OD搜索createwindow然后下断,这一步的操作是为了让vm把壳吐出来

请添加图片描述

内存中搜索前文所准备好的特征码:55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 81 EC AC 01 00 00,找到关键函数地址0x437600

请添加图片描述

请添加图片描述

根据前文的讲过的操作寻找到偏移量(过程不演示了),偏移量是B0

请添加图片描述

转到易语言体的反汇编处往上拉,nop下面的地址是401004,然后加上偏移量等于4010b4,这个地址就是按钮事件函数地址

请添加图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
易语言汉语编程环境是一个支持基于汉语字、词编程的、全可视化的、跨主流操作系统平台的编程工具环境,易语言5.71是在5.7的基础上增强的,功能和性能都更强,给大家带来最新的易语言5.71破解补丁 ,就可以没有限制的使用了,需要易语言5.71破解补丁可免费下载! 破解教程 第一步:安装5.71版易语言 安装完成不要启动易语言,直接退出即可 第二步:下载附件,解压出来放到易语言安装目录下,全部替换 第三步:替换完成后打开易语言安装目录下的链接转换器,测试vc6成功,其他自测 第四步:验证破解吧! MD5: 729A09CD2213920949B2F737D15B247D SHA1: F8088B165E50563F1ABDE8923A1E267A32574519 CRC32: 80F74C7D 软件特色 全中文支持,无需跨越英语门槛。 全可视化编程,支持所见即所得程序界面设计和程序流程编码。 中文语句快速录入。提供多种内嵌专用输入法,彻底解决中文语句输入速度慢的问题。 代码即文档。自动规范强制代码格式转换,任何人编写的任何程序源代码格式均统一。 参数引导技术,方便程序语句参数录入。 无定义类关键字。所有程序定义部分均采用表格填表方式,用户无需记忆此类关键字及其使用格式。 命令格式统一。所有程序语句调用格式完全一致。 语法格式自动检查。自动检查并提示所输入语句的语法格式是否正确,且可自动添加各类名称。 全程提示与帮助。鼠标停留即显示项目提示,编程时提示语法格式,调试时提示变量当前内容,按下F1键得到相关帮助等。 名称自动管理。用户修改任一名称定义,其它所有包含该名称的程序代码均自动修正。 集成化开发环境。集界面设计、代码编写、调试分析、编译打包等于一体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值