易语言程序在中国的用户量还是很大的,广泛用于外挂的开发,和一些小工具的编写,今天我们就来看下如何给易语言程序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. 执行jar包或执行其中的某个类

    执行jar包,默认执行javafile中指定的main程序java -jar jar包例如 java -jar test.jar执行依赖其他jar包的class: java -cp .;E:\tool ...

  2. Asyncio之EventLoop笔记

    使用事件循环 Python3.4 采用了一个强大的框架来支持代码的并发执行: asyncio.这个框架使用事件循环来编排回调和异步任务. 事件循环位于事件循环策略的上下文中-这是 asyncio 所特 ...

  3. Explain详解

    explain语句用于查看某个查询语句具体使用了什么执行计划 执行输出各列详解 table 每条记录对应一个表的查询,如果是两表连接查询,就会有两条记录,table对应查询表名 id 查询语句可能是单 ...

  4. vue 无法覆盖vant的UI组件的样式

    vue 无法覆盖vant的UI组件的样式 有时候UI组件提供的默认的样式不能满足项目的需要,就需要我们对它的样式进行修改,但是发现加了scoped后修改的样式不起作用. 解决方法: 使用深度选择器,将 ...

  5. Android跨进程通信Content Provider

    Content Provider ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通 ...

  6. LC 740. Delete and Earn

    Given an array nums of integers, you can perform operations on the array. In each operation, you pic ...

  7. UML 2.5版本与UML分类概述

    UML 2.5版本与UML分类概述 转 http://www.umlstudy.com/uml-25-diagrams.html UML简述 UML图是设计.实现或已经存在的系统模型的部分图形表示(视 ...

  8. eclipse syso 自动补全设置方法

    eclipse syso 自动补全设置方法   转  https://blog.csdn.net/sinat_23536373/article/details/76512390   经常遇到打”sys ...

  9. 【转】实现1080P延迟低于500ms的实时超清直播传输技术

    最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案.众所周知,视频直播用 CDN + RTMP 就可以满足绝大部分视频直播业务,我们也接触了和测试了几家 CDN 提供的方案,单人 ...

  10. SpringBoot搭建聚合项目-实战记录01

    工具:Spring Tool Suite 4 项目搭建 1.首先建立工作集 : Configure Working Sets -> New.. ->设置名称(如project) -> ...