zoukankan      html  css  js  c++  java
  • 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.分别运行这三个文件,前两个正常运行,最后一个有暗装,退出了。

            

    写教程不容易,转载请加出处,您添加出处,是我创作的动力!

  • 相关阅读:
    Add Two Numbers
    Reverse Linked List II
    Reverse Linked List
    Remove Duplicates from Sorted List
    Remove Duplicates from Sorted List II
    Partition List
    Intersection of Two Linked Lists
    4Sum
    3Sum
    2Sum
  • 原文地址:https://www.cnblogs.com/LyShark/p/11165448.html
Copyright © 2011-2022 走看看