X86逆向6:易语言程序的DIY
易语言程序在中国的用户量还是很大的,广泛用于外挂的开发,和一些小工具的编写,今天我们就来看下如何给易语言程序DIY,这里是用的易语言演示,当然这门技术也是可以应用到任何一门编译型语言中的,只要掌握合适的方法,就可以加以修改应用到其他的语言中,这里一定要活学活用,才能将破解玩6。
------------------------------------------------------------
本章难度:★★☆☆☆☆☆☆☆☆
课程课件:CM_06.zip
------------------------------------------------------------
屏蔽弹窗网址
开头先来个简单的,当我们点击弹出百度按钮时,程序会弹出一个网页,有时候我们在打开其他的一些程序时也总会弹一些烦人的广告,这里我们将学会去除这些烦人的广告,当然这里的方法有很多,最简单的是直接搜索弹出网站的字符串,不过如果程序加密了则搜索不到字符串了,这里我们将使用下断点的方式去广告。
1.DIY的第一步,修改弹窗网址,直接OD载入,点击弹出百度。

2.在Windows系统中一般的弹出网页都会调用【shell32.ShellExecuteA】这个函数来完成,我们就直接下一个断点。

3.运行程序直接点击,【弹出百度】按钮,程序会被断下,直接出这个CALL,到CALL的外部。 
4.出CALL后,果断在断首下一个【F2】断点,直接重载程序,并运行,点击弹出百度按钮。

5.我们直接修改,直接让这个程序返回,这样就不会弹窗了。注意返回后面的返回值,别填错了。

6.直接保存修改,然后运行一下程序,点击【弹出百度】,程序没反应,去弹窗成功。

信息框改成窗体
在这个CM程序中,当我们点击【弹出窗体】按钮时,会弹出两个【信息框】,在这个程序里面我隐藏了一个主窗体,如果不经过修改这个主窗体永远不会弹出来,这里我们就DIY一下,将【弹出窗体按钮】修改成弹出我们的隐藏窗口。
1.OD载入这个程序,选择【Ctrl+G】,输入【401000】 到程序的段首。

2.先来看一下隐藏窗体的代码的样子,如下选中部分,我们需要关注从push 到 add esp,28这一段,还有call 的地址。

3.继续往下找,则会看到易语言的MessageBox信息框,如果找不到,可以用按钮事件来定位到这里,按钮事件这里就不演示了。

4.复制窗体代码,并以二进制方式复制,然后这里需要记下call 位置的这个地址【00401390】。

5.粘贴的时候要注意,断首要保留这是程序的调用约定,每个程序段中必须存在的部分,这里还要注意要记得修改,【call 00401390】,修改完成后直接二进制粘贴即可。

6.在窗体程序的结尾部分添加以下内容,这些也是调用约定,和开头的是成对存在的,如果少了的话堆栈会失衡,程序会崩溃。

7.最后的样子如下所示,我们直接【右键】,【复制可执行文件】,【选择】,【保存文件】就可以了。

最后打开保存后的程序,点击【弹出窗体】按钮,会发现MessageBox弹窗变成了,隐藏的主窗体。
给按钮添加弹窗
打开CM会看到【一个空按钮】,这个空按钮没有任何的功能,这里我们就给它添加一个弹窗,并弹出【https://lyshark.cnblogs.com】。
1.OD直接载入程序,然后去【401000】处,找到一处弹窗代码,这里需要注意的是如果程序中有弹窗代码,你才可以DIY,如果没有导入MessageBox函数,则无法DIY,需要修改导入表的。

2.我们直接复制上面的这段代码,需要注意这里的【call】地址的变化,然后我们定位一下第三个按钮的按钮事件位置,按下【ctrl + B】,直接输入定位特征码,然后在call的位置,下一个【F2】断点。

3.运行程序,并点击【一个空按钮】,程序断下,然后按下【F7】进入到CALL的内部。

4.将刚才复制的代码直接粘贴到这个位置,然后修正下call的调用地址。

5.接着找一块空旷的区域,并创建一个字符串,按下【ctrl + B】,然后输入如下字符串

看到一堆DB,直接【右键】,【分析】,【从模块中删除分析】
6.选中【二进制】编辑,然后写上自己的网址,别忘了最后添加一个00,标志着字符串的结束,并记下【0047F12E】。


7.回到刚才的位置上,改写push指令的地址,也就是弹窗的字符串。

8.最后选择复制可执行文件,选择所有修改,最后保存文件。

9.最后我们点开这个修改版的程序,然后点击【一个空按钮】,程序弹出了我们DIY的提示框内容。

易语言屏蔽时钟
每一种编程语言都有时钟,如果在程序中加入一些时钟,那我们的OD有时候就无法下断点了,最明显的现象就是我们只要下断点,程序就会自动的跑到断点位置上去,干扰我们的分析,其实这也不算是暗装,只要加入时钟并运行就可能会出现这种情况,下面我们将通过设置SetTimer断点,来实现让时钟停止计时。
1.直接OD载入程序,然后不要运行,如果运行了,就算修改了系统领空的时钟那也无效了,因为时钟是一个线程,跑起来他爹都管不着。

2.然后直接修改系统领空的时钟事件,让其直接返回。

3.这个时候我们运行程序,然后点击时钟,发现时钟失效了,达到了我们的目的。

但是这里需要注意的是,我们修改了系统领空的函数,所以可能也会影响其他程序的正常执行,所以在破解完成后,最好手动恢复代码。

易语言Push 窗体
push 窗体可以用来过一些比较复杂的验证,如下我们有一个程序,默认情况下是不可能登录成功的,此时我们可以是用push窗体法搜索整个程序中的窗体ID,然后分别替换程序的主窗体ID,让程序默认加载替换后的窗体。
1.OD载入程序并运行,这个程序默认无法登录,我们就来DIY一下,把它内部的隐藏窗体全部DIY出来。

2.直接按下【ctrl + B】输入特征码【FF 25】点击确定,下面的一堆JMP就是易语言特有的一些指令片段。

3.上面的一个PUSH命令,就是易语言程序默认的主窗体ID,我们现在要做的就是将这个主窗体ID替换成其他隐藏窗体的ID。

4.到【401000】断首,按下【ctrl + F】查找命令,查找【push 10001】命令,找到后记下【52010061】,继续查找下一个。

5.按下【ctrl + L】,查找下一个相同的命令,并记下它的主窗体ID号码,以此循环往复,直到找到全部的ID为止。

6.在这里我一共找到了3处,分别是【52010061】,【52010065】,【52010071】,好了,将这三个地址分别替换到程序的主窗体上面。

7.分别保存出文件来,如下我保存了三个这样的文件,也就分别对应三个窗体。

8.分别运行这三个文件,前两个正常运行,最后一个有暗装,退出了。

写教程不容易,转载请加出处,您添加出处,是我创作的动力!
X86逆向6:易语言程序的DIY的更多相关文章
- X86逆向13:向程序中插入Dll
本章我们将学习Dll的注入技巧,我们将把一个动态链接库永久的插入到目标程序中,让程序在运行后直接执行这个Dll文件,这一章的内容也可以看作是第八课的加强篇,第八课中我们向程序中插入了一个弹窗,有木有发 ...
- X86逆向8:向程序中插入新区段
本节课我们不去破解程序,本节课学习给应用程序插入一些代码片段,这里我就插入一个弹窗喽,当然你也可以插入一段恶意代码,让使用的人中招, 这里有很多原理性的东西我就不多罗嗦了毕竟是新手入门教程,如果想去了 ...
- X86逆向5:破解程序的自效验
在软件的破解过程中,经常会遇到程序的自效验问题,什么是自效验?当文件大小发生变化,或者MD5特征变化的时候就会触发自效验暗装,有些暗装是直接退出,而有些则是格盘蓝屏等,所以在调试这样的程序的时候尽量在 ...
- 易语言效率与C++究竟差多少(质数和计算)
文本首发bIlibili,cnblogs为作者补发,如在其他平台看见本文,均为经允许的盗窃 易语言作为款主打 中文 易用 编程的开发软件.但是很多人都在批评易语言的效率. 我们今天通过 质数和计算 来 ...
- 易语言VS杀毒软件:基情复燃,转受为攻!
这两天在编程领域里,又发生了一件令人瞩目的事情:以易语言创始人吴涛的一篇檄文<tid=370327">让我们一起来对360误报说不!>为序幕.再次拉开了易语言跟360杀毒软 ...
- 易语言调用csharp写的COM组件的程序在Win2008上奔溃的解决办法
易语言调用csharp写的COM组件,除了要注册csharp写的dll之外(由于是.net代码,需要用.net自带的注册工具RegAsm.exe注册,具体注册方法为: C:\WINDOWS\Micro ...
- X86逆向1:软件破解入门课【课件下载】
从本节课开始,我将带领小白入门学习软件破解的相关内容,大佬绕过,以后将会定期更新从最基本的破解知识点开始学习,由简单到复杂循序渐进,难度会逐步提高. 为了防止版权方面的争议,我将自行编写一些破解案例来 ...
- 易语言加壳SDK(宏标记)
转载 http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece76310508c31490797634b87834e29938448e435061 ...
- 易语言软件加VMProtect壳的正确方法
VMP是一款很强大的加密壳,代码虚拟化技术可以很好的保护程序不被恶意修改破J但是很多人不知道怎么给自己的程序加壳,今天给大家晋级下加壳的正确方法 相信很多新手都以为只要把软件直接拖到VMP里重新编译一 ...
随机推荐
- 2018-2019-2 20165330《网络对抗技术》Exp8 Web基础
目录 基础问题 相关知识 实验内容 实验步骤 实验总结与体会 实验内容 Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML ...
- mysql 首次安装后 简单操作与语句 新手入门
首先cd到安装目录中bin路径:这是我的安装路径以管理员身份打开cmd(防止权限不足)cd E:\>cd E:\mysql\mysql-5.5.40-winx64\bin 首次安装需要输入 my ...
- shiro中接入单点登录功能
最近新建的系统中使用了shiro,而shiro框架中包含登录认证和鉴权的功能,因为我们系统要统一接入公司内部的单点登录(isso)系统,所以通过isso的登录用户,需要在shiro中置为已认证,一下提 ...
- LC 265. Paint House II
There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...
- 007-Linux 查看端口
1.使用ss 查看 ss 一般用于转储套接字统计信息.它还可以显示所有类型的套接字统计信息,包括 PACKET.TCP.UDP.DCCP.RAW.Unix 域等. ss -lntpd | grep : ...
- jQuery上传文件显示进度条
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...
- JAVA 基础编程练习题9 【程序 9 求完数】
9 [程序 9 求完数] 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如 6=1+2+3.编程找出 1000 以内的 所有完数. package cskaoyan ...
- 实战keras——用CNN实现cifar10图像分类
原文:https://blog.csdn.net/zzulp/article/details/76358694 import keras from keras.datasets import cifa ...
- Mac 常用配置(JDK切换,ll命令设置)
打开 /Users/用户/.bash_profile文件 1.JDK切换,添加如下内容 export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6` # 设置 ...
- C# CRC16 modbus
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...