悟夜叉个人博客 技术专题 易语言程序分析:绕过软件本地登陆验证Ⅰ

易语言程序分析:绕过软件本地登陆验证Ⅰ

之前有写过一篇简易程序动态分析的教程(点击查看),使用的是 ollydbg 的智能搜索引擎找到真码。本篇和续篇会带给大家其他几种绕过本地验证的方式。

前言

如果获取到了一个外挂程序做功能性鉴定,有本地验证应该怎么办?

给你一个数据,在游戏厂商打击的外挂中,超过9成的都是由易语言开发的,已经被判刑的外挂作者几乎都是初中高中学历。

现在互联网充斥着特别多制作外挂的教程,仅需1~2个月就能学会主流游戏的外挂制作。

案例介绍

警方介绍,“老鬼”的正牌工作是公司程序员,下班后的时间,才是其吸金的黄金时刻。近年来,靠着自己的工资和额外创收,“老鬼”已经在深圳买房买车,过着中产阶级的富足生活。

面对警方的到来,“老鬼”没有狡辩。作为IT行业的资深从业人员,“老鬼”自然知道自己的创收途径并不合法。几年前,他尝试写了外挂并卖给网友后,利润如雪球般滚来,他就在违法路上欲罢不能了。

“老鬼”虽然只有中专文化,但在计算机领域有一定天赋,程序员工作很是出色,也是网络游戏的痴迷者。在打游戏的过程中,他接触到了外挂,很快就能创作了。第一次写外挂后,他和几个好友分享了一下,哪知大受欢迎,逐渐有人开始花钱邀请他写,他的“创收之路”就此开启。

易语言简介

可能有些人还不太清楚什么是易语言,它是现在世界上唯一的一个能以中文编程的开发环境,采用的是VB6.0的框架,添加了一些可用于其他平台的特性。是可以快速上手,快速精通,是专为国人开发的,不需要任何英语基础就能开发软件。

正题开始

得从最简单的开始讲起,准备了一个不加壳的易语言程序来做demo。如果一个程序已经被加壳的话,就需要先脱壳,玩法就不一样了

先用易语言编写个demo例子

来看一下代码,是不是很简单呢?如果我们输入了一串密码,正确错误都对应提示

打开软件随便输入一个密码,点击登录,肯定是不行的。除非你运气比较好,能一次猜对

那我们就要使用一个动态调试工具 ollydbg,可能大家对 IDA 有听说过,这个是静态调试工具(后续会发文章讲解)

推荐下载吾爱破解专用版Ollydbg:https://down.52pojie.cn/?query=olldbg

下载解压后,选择 吾爱破解[LCG] 进入主程序

将 demo 拖进 ollydbg 分析

>>> NOP 填充法

这个方式主要是要找关键跳转,关键跳转肯定是在点击“登陆”后进行的

Ctrl + A 分析代码,或者右键去操作

这里就需要了解一个知识点,易语言按钮事件特征码:ff 55 fc 5f 5e

按下 Ctrl + B,把上面的特征码输入进去进行搜索

然后就到了 local.1 的位置,在这个位置按下 F2 进行断点

按下 F2 之后,前面的 00418A5D 已经变红了,说明已经下好了断点

点击上方的小三角运行程序,点击登录,会自动定位到断点的位置

call 相当于一个子程序,我们要进入到子程序内去看代码,在断点处按下 F7 单步步入

就跳到子程序的第一条汇编指令,如下图所示

看不懂没有关系,按 F8 一条条往下执行,发现了第一个红框包起来的代码

既然是本地验证,点击登陆验证密码成功后,会弹出来主窗口,这个 红色括号 的内容不应该只有这么一点点

仅仅一个弹框,利用汇编代码都要写很长一串

继续按F8继续寻找,找到了一个被大框框住的一段代码,把这个 004010FD 记录一下

按F8的时候,这一段是直接跳过的(从大红框第一行跳到最后一行),说明很符合软件的场景,密码错误就跳过

先按下退回键重新运行程序,前面的步骤都是一样的

先不要F8进行执行,找到刚刚的 je 跳转 004010FD ,在这段 je 处按下 右键 – 二进制 – 用NOP填充

相当于这个判断被我们给破坏掉了,不管你密码输入的是否正确,都继续执行里面的代码

继续按下 F8 执行,发现弹出了 密码正确 的提示,说明上一个 call 就是提示密码正确的代码

那既然已经提示密码正确了,那么 0040112F 这个 call 是不是可以猜到是弹出新窗口的代码呢?

成功绕过验证弹出主窗口,说明这一段就是弹出主窗口的代码

0040112F |. E8 C0000000 call XX外挂.004011F4
00401134 |. 83C4 34 add esp,0x34
00401137 |. 68 02000080 push 0x80000002
0040113C |. 6A 00 push 0x0
0040113E |. 68 01000000 push 0x1
00401143 |. 6A 00 push 0x0
00401145 |. 6A 00 push 0x0
00401147 |. 6A 00 push 0x0
00401149 |. 68 01000100 push 0x10001
0040114E |. 68 06000106 push 0x6010006
00401153 |. 68 07000152 push 0x52010007
00401158 |. 68 03000000 push 0x3
0040115D |. BB 10124000 mov ebx,XX外挂.00401210

这一段很多 push 的,熟悉易语言逆向的小伙伴应该能直接看出来,是在加载窗口

最后

对于软件逆向,还是得不断的去找demo或者题目去练习,这样才能慢慢熟悉这些汇编代码。毕竟熟能生巧,对于我自己来说,我喜欢不断的刷题去熟悉,而不是去死记硬背汇编代码。

整篇文章的内容可能有些地方有误,因为要做成一个通俗易懂的教程出来,可能在编写文字的时候,会出一些小问题。大家如果发现错误的地方,欢迎留言交流!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

站长QQ/VX:82794

在线咨询: QQ交谈

邮箱: 82794@qq.com

任何技术问题请联系QQ,非特殊行业请勿加微信!龙信小伙伴请联系微信群找我。
关注微信
非商务合作请勿添加

非商务合作请勿添加微信

返回顶部