易语言程序在中国的用户量还是很大的,广泛用于外挂的开发,和一些小工具的编写,今天我们就来看下如何给易语言程序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的更多相关文章

  1. X86逆向13:向程序中插入Dll

    本章我们将学习Dll的注入技巧,我们将把一个动态链接库永久的插入到目标程序中,让程序在运行后直接执行这个Dll文件,这一章的内容也可以看作是第八课的加强篇,第八课中我们向程序中插入了一个弹窗,有木有发 ...

  2. X86逆向8:向程序中插入新区段

    本节课我们不去破解程序,本节课学习给应用程序插入一些代码片段,这里我就插入一个弹窗喽,当然你也可以插入一段恶意代码,让使用的人中招, 这里有很多原理性的东西我就不多罗嗦了毕竟是新手入门教程,如果想去了 ...

  3. X86逆向5:破解程序的自效验

    在软件的破解过程中,经常会遇到程序的自效验问题,什么是自效验?当文件大小发生变化,或者MD5特征变化的时候就会触发自效验暗装,有些暗装是直接退出,而有些则是格盘蓝屏等,所以在调试这样的程序的时候尽量在 ...

  4. 易语言效率与C++究竟差多少(质数和计算)

    文本首发bIlibili,cnblogs为作者补发,如在其他平台看见本文,均为经允许的盗窃 易语言作为款主打 中文 易用 编程的开发软件.但是很多人都在批评易语言的效率. 我们今天通过 质数和计算 来 ...

  5. 易语言VS杀毒软件:基情复燃,转受为攻!

    这两天在编程领域里,又发生了一件令人瞩目的事情:以易语言创始人吴涛的一篇檄文<tid=370327">让我们一起来对360误报说不!>为序幕.再次拉开了易语言跟360杀毒软 ...

  6. 易语言调用csharp写的COM组件的程序在Win2008上奔溃的解决办法

    易语言调用csharp写的COM组件,除了要注册csharp写的dll之外(由于是.net代码,需要用.net自带的注册工具RegAsm.exe注册,具体注册方法为: C:\WINDOWS\Micro ...

  7. X86逆向1:软件破解入门课【课件下载】

    从本节课开始,我将带领小白入门学习软件破解的相关内容,大佬绕过,以后将会定期更新从最基本的破解知识点开始学习,由简单到复杂循序渐进,难度会逐步提高. 为了防止版权方面的争议,我将自行编写一些破解案例来 ...

  8. 易语言加壳SDK(宏标记)

    转载 http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece76310508c31490797634b87834e29938448e435061 ...

  9. 易语言软件加VMProtect壳的正确方法

    VMP是一款很强大的加密壳,代码虚拟化技术可以很好的保护程序不被恶意修改破J但是很多人不知道怎么给自己的程序加壳,今天给大家晋级下加壳的正确方法 相信很多新手都以为只要把软件直接拖到VMP里重新编译一 ...

随机推荐

  1. python 找出数组重复的元素

    """ 从头扫到尾,只要当前元素值与下标不同,就做一次判断,numbers[i]与numbers[numbers[i]], 相等就认为找到了重复元素,返回true,否则就 ...

  2. centos7下面安装tomcat

    前言 对于一个新安装的 centos 系统来说,是没有 tomcat 服务器的.用下面的命令可以查看 tomcat 服务的状态. systemctl status tomcat.service//或者 ...

  3. CTF中PHP反序列化和命令注入的一次简单利用

    代码来自第六届防灾科技学院网络安全技能大赛,侵删. 目标 获取Linux服务器根目录下的flag 代码 /*home.php*/ class home{ private $method; privat ...

  4. ORA-00054: 资源正忙 --锁表的解决方法

    问题描述 ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 发生异常 原因:其他Session已经对目标表做了操作,且未提交操作,导致锁表,新的Session无法 ...

  5. javascript 数据分组

    一.静态数据 [ {"id":"1001","name":"值1","value":"11 ...

  6. webstrom配置node语法提示

    一.mac下打开设置 二.输入node,找到node.js npm,勾选上对勾就好了. 第三.按住ctr,点击右键可以点进去就可以了.

  7. jeecg随笔

    1.根据数据字典code查找该字典下的元素: SELECT typecode,typename from t_s_type where typegroupid=(select id from t_s_ ...

  8. vsftpd 配置用户及根目录及其参数详解

    vsftpd 常用功能参数配置及参数详解 Table of Contents 1. 配置超级服务 2. 配置匿名用户 3. 配置本地用户登录 4. 配置虚拟用户登录 5. 使用SSL登入 6. 日志文 ...

  9. 【转载】网页JS获取当前地理位置(省市区)

    眼看2014又要过去了,翻翻今年的文章好像没有写几篇,忙真的或许已经不能成为借口了,在忙时间还是有的,就像海绵里的水挤挤总会有滴.真真的原因是没有学习过什么新的技术,工作过程中遇到的问题也不是非常难并 ...

  10. Ubuntu 安装 docker,并上传到dockerhub

    一.安装Docker apt-get -y install docker.io 链接: ln -sf /usr/bin/docker.io /usr/local/bin/docker 检查docker ...