易语言的网络验证实现详解

易语言就是一种脚本语言,他是采用的封装形式去完成

他在5.0以下版本时,都是采用的易语言开发环境的编译模式,同时是采用C++编译

他主要以中文编程,深受新手朋友欢迎,所以这这里,我也推荐大家去学习一下

易语言其实就像我们人穿着衣服一样的,需要看到内在的话,就需要先脱掉衣服,其实也就是和壳的类型相差无己

00445151 >/$  55            push ebp             、、载入程序后的入口
00445152  |.  8BEC          mov ebp,esp
00445154  |.  6A FF         push -0x1
00445156  |.  68 70AD4600   push 1111.0046AD70
0044515B  |.  68 5C994400   push 1111.0044995C                       ;  SE 处理程序安装
00445160  |.  64:A1 0000000>mov eax,dword ptr fs:[0]
00445166  |.  50            push eax
00445167  |.  64:8925 00000>mov dword ptr fs:[0],esp
0044516E  |.  83EC 58       sub esp,0x58
00445171  |.  53            push ebx
00445172  |.  56            push esi
00445173  |.  57            push edi                                 ;  ntdll.7C930738
00445174  |.  8965 E8       mov [local.6],esp

二进制查找,便于识别易语言 FC DB E3

我们可以运行起来之后,在AIT+E查找用户模块中使用二进制查找

004198A1    59              pop ecx
004198A2    49              dec ecx
004198A3  ^ 75 EB           jnz short 六开挤线.00419890
004198A5    E8 A8000000     call 六开挤线.00419952
004198AA    83C4 04         add esp,0x4
004198AD    8B1D 18754C00   mov ebx,dword ptr ds:[0x4C7518]
004198B3    85DB            test ebx,ebx
004198B5    74 09           je short 六开挤线.004198C0
004198B7    53              push ebx
004198B8    E8 95000000     call 六开挤线.00419952
004198BD    83C4 04         add esp,0x4
004198C0    8B1D 1C754C00   mov ebx,dword ptr ds:[0x4C751C]
004198C6    53              push ebx
004198C7    E8 86000000     call 六开挤线.00419952
004198CC    83C4 04         add esp,0x4
004198CF    8B1D 20754C00   mov ebx,dword ptr ds:[0x4C7520]
004198D5    53              push ebx
004198D6    E8 77000000     call 六开挤线.00419952
004198DB    83C4 04         add esp,0x4
004198DE    8B1D 24754C00   mov ebx,dword ptr ds:[0x4C7524]
004198E4    85DB            test ebx,ebx
004198E6    74 09           je short 六开挤线.004198F1
004198E8    53              push ebx
004198E9    E8 64000000     call 六开挤线.00419952
004198EE    83C4 04         add esp,0x4
004198F1    8B1D 30754C00   mov ebx,dword ptr ds:[0x4C7530]
004198F7    53              push ebx
004198F8    E8 55000000     call 六开挤线.00419952
004198FD    83C4 04         add esp,0x4
00419900    8B1D 34754C00   mov ebx,dword ptr ds:[0x4C7534]
00419906    53              push ebx
00419907    E8 46000000     call 六开挤线.00419952
0041990C    83C4 04         add esp,0x4
0041990F    C3              retn
00419910    B8 06000000     mov eax,0x6
00419915    E8 32000000     call 六开挤线.0041994C
0041991A    FC              cld
0041991B    DBE3            finit
0041991D    E8 33FDFFFF     call 六开挤线.00419655
00419922    68 F1974100     push 六开挤线.004197F1
00419927    B8 03000000     mov eax,0x3
0041992C    E8 1B000000     call 六开挤线.0041994C
00419931    83C4 04         add esp,0x4
00419934    E8 E5E8FFFF     call 六开挤线.0041821E
00419939    E8 C676FEFF     call 六开挤线.00401004
0041993E    E8 03000000     call 六开挤线.00419946
00419943    33C0            xor eax,eax
00419945    C3              retn
00419946    FF25 64AA4900   jmp dword ptr ds:[0x49AA64]              ; 六开挤线.0043B7C0
0041994C    FF25 6CAA4900   jmp dword ptr ds:[0x49AA6C]              ; 六开挤线.0043B3A0
00419952    FF25 5CAA4900   jmp dword ptr ds:[0x49AA5C]              ; 六开挤线.0043B960
00419958    FF25 54AA4900   jmp dword ptr ds:[0x49AA54]              ; 六开挤线.0043B830
0041995E    FF25 48AA4900   jmp dword ptr ds:[0x49AA48]              ; 六开挤线.0043B420
00419964    FF25 4CAA4900   jmp dword ptr ds:[0x49AA4C]              ; 六开挤线.0043B770
0041996A    FF25 50AA4900   jmp dword ptr ds:[0x49AA50]              ; 六开挤线.0043B790
00419970    FF25 40AA4900   jmp dword ptr ds:[0x49AA40]              ; 六开挤线.0043B3D0
00419976    FF25 3CAA4900   jmp dword ptr ds:[0x49AA3C]              ; 六开挤线.0043B750
0041997C    FF25 44AA4900   jmp dword ptr ds:[0x49AA44]              ; 六开挤线.0043B3E0
00419982    FF25 58AA4900   jmp dword ptr ds:[0x49AA58]              ; 六开挤线.0043B8A0

以上代码简称易原体

首先我们按强度排列

第一的当然是

可可验证

绝大多数运用在DNF外挂上面

飘零网络验证

飘零的早期版本,是可以山寨到管理端的

CC网络验证

相对来说,较为简单,但是作者也颇贱,原版CC就带有格盘代码

小烦的网络验证

更为简单,有数据库漏洞

当我们辨别出是那一款比较常见的网络验证之时,可以常试先找一份无壳版的跟一下,然后在套用思路即可

UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo

这个不带附加数据,可以判定为5.XX版所编译,也就是无脱壳机的

当然UPX较为简单,是有脱壳机的,要是VMP的话,就抱着JJ叫疼吧

在一个程序脱壳之后,第一步不应该是去运行看他能否运行,因为要是有效验,你就死在你那

小手一点之上啦

0041CF7B   .  50            push eax                                 ; /Style = MB_OKCANCEL|MB_APPLMODAL
0041CF7C   .  52            push edx                                 ; |Title = ""
0041CF7D   .  51            push ecx                                 ; |Text = "?"
0041CF7E   .  6A 00         push 0x0                                 ; |hOwner = NULL
0041CF80   .  FF15 18754900 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
0041CF86   .  5F            pop edi                                  ;  六开挤线.0041BA91
0041CF87   .  83F8 03       cmp eax,0x3                              ;  Switch (cases 2..7)
0041CF8A   .  5E            pop esi                                  ;  六开挤线.0041BA91
0041CF8B   .  75 0F         jnz short 六开挤线.0041CF9C         //当我们走到此
0041CF8D   .  8B4C24 68     mov ecx,dword ptr ss:[esp+0x68]          ;  Case 3 of switch 0041CF87
0041CF91   .  B8 02000000   mov eax,0x2
0041CF96   .  8901          mov dword ptr ds:[ecx],eax
0041CF98   .  83C4 64       add esp,0x64
0041CF9B   .  C3            retn

当我们回缩之后,所有的易语言都会停留在这样一个位置,当然也只是针对信息框

修改Z标志位使跳转不实现,或者单步多次跟

00415728   > \6A 00         push 0x0
0041572A   .  6A 00         push 0x0
0041572C   .  6A 00         push 0x0
0041572E   .  68 01030080   push 0x80000301
00415733   .  6A 00         push 0x0
00415735   .  68 00000100   push 0x10000                             ;  UNICODE "=::=::\"
0041573A   .  68 04000080   push 0x80000004
0041573F   .  6A 00         push 0x0
00415741   .  68 84D64900   push 六开挤线.0049D684                       ;  启动线程失败,内部错误。
00415746   .  68 03000000   push 0x3
0041574B   .  BB E0CE4100   mov ebx,六开挤线.0041CEE0
00415750   .  E8 09420000   call 六开挤线.0041995E
00415755   .  83C4 28       add esp,0x28

---------------------------------------------------------------------------------------------------------------------------
004156A5   .  68 02000080   push 0x80000002
004156AA   .  6A 00         push 0x0
004156AC   .  68 00000000   push 0x0
004156B1   .  6A 00         push 0x0
004156B3   .  6A 00         push 0x0
004156B5   .  6A 00         push 0x0
004156B7   .  68 01000100   push 0x10001
004156BC   .  FF35 D4744C00 push dword ptr ds:[0x4C74D4]
004156C2   .  FF35 D0744C00 push dword ptr ds:[0x4C74D0]
004156C8   .  68 03000000   push 0x3
004156CD   .  BB D09E4100   mov ebx,六开挤线.00419ED0
004156D2   .  E8 87420000   call 六开挤线.0041995E
004156D7   .  83C4 28       add esp,0x28
004156DA   .  6A 00         push 0x0
004156DC   .  68 02000000   push 0x2
004156E1   .  6A FF         push -0x1
004156E3   .  6A 12         push 0x12
004156E5   .  68 E6A90206   push 0x602A9E6
004156EA   .  68 7F9F0252   push 0x52029F7F
004156EF   .  E8 76420000   call 六开挤线.0041996A
004156F4   .  83C4 18       add esp,0x18
004156F7   .  6A 00         push 0x0
004156F9   .  68 00000000   push 0x0
004156FE   .  6A FF         push -0x1
00415700   .  6A 05         push 0x5
00415702   .  68 E6A90206   push 0x602A9E6
00415707   .  68 7F9F0252   push 0x52029F7F
0041570C   .  E8 59420000   call 六开挤线.0041996A
00415711   .  83C4 18       add esp,0x18
00415714   .  E8 0B79FFFF   call 六开挤线.0040D024
00415719   .  E8 C594FFFF   call 六开挤线.0040EBE3
 
004156DA   .  6A 00         push 0x0
004156DC   .  68 02000000   push 0x2
004156E1   .  6A FF         push -0x1
004156E3   .  6A 12         push 0x12
004156E5   .  68 E6A90206   push 0x602A9E6
004156EA   .  68 7F9F0252   push 0x52029F7F
004156EF   .  E8 76420000   call 六开挤线.0041996A
004156F4   .  83C4 18       add esp,0x18

这样的代码我们叫他为窗体事件,只要鼓捣过易语言老版本的人都比较清楚

只要能锁定到窗体事件,完全就可以来一个超级大跳转

易语言按钮事件查找方法

查找二进制代码

FF 55 FC 5F 5E

00402A70  |.  F6C4 01       test ah,0x1
00402A73  |.  74 02         je short 六开挤线.00402A77
00402A75  |.  D9E0          fchs
00402A77  |>  DC1D 63AC4900 fcomp qword ptr ds:[0x49AC63]
00402A7D  |.  DFE0          fstsw ax
00402A7F  |.  F6C4 41       test ah,0x41
00402A82  |.  0F84 04000000 je 六开挤线.00402A8C        通常易语言采用浮点计算时,我们可以把TEST AH,41之下的JE使不让其跳转
00402A88  |.  33C0          xor eax,eax
00402A8A  |.  EB 05         jmp short 六开挤线.00402A91

易语言的远跳转以及易语言的JE JNZ是非常需要关注的

0043B880      55            push ebp
0043B881  |.  8BEC          mov ebp,esp
0043B883  |.  8B45 08       mov eax,[arg.1]                          ;  六开挤线.004D3690
0043B886  |.  50            push eax
0043B887  |.  B9 60364D00   mov ecx,六开挤线.004D3660
0043B88C  |.  E8 FF85FFFF   call 六开挤线.00433E90
0043B891  |.  8B4D 08       mov ecx,[arg.1]                          ;  六开挤线.004D3690
0043B894  |.  51            push ecx                                 ; /ExitCode = BD8B88
0043B895  \.  FF15 90724900 call dword ptr ds:[<&KERNEL32.ExitProces>; \ExitProcess
0043B89B   .  5D            pop ebp                                  ;  user32.77D191AE
0043B89C   .  C3            retn

把0043B880给RETN掉即可解决退出的暗装

85 C9 75 09 33 C0 80 3A 00 74 01 40 C3 F7 C2 03 00 00 00 75 37 8B 02 3A 01 75 2B 0A C0 74 24 3A
61 01 75 22 0A E4 74 1B C1 E8 10 3A 41 02 75 16 0A C0 74 0F 3A 61 03 75 0D 83 C1 04 83 C2 04 0A
E4 75 D2 33 C0 C3 1B C0 D1 E0 40 C3

004022F8  |> \85C9          test ecx,ecx
004022FA  |.  75 09         jnz short 六开挤线.00402305
004022FC  |.  33C0          xor eax,eax
004022FE  |.  803A 00       cmp byte ptr ds:[edx],0x0
00402301  |.  74 01         je short 六开挤线.00402304
00402303  |.  40            inc eax
00402304  |>  C3            retn
00402305  |>  F7C2 03000000 test edx,0x3
0040230B  |.  75 37         jnz short 六开挤线.00402344
0040230D  |>  8B02          /mov eax,dword ptr ds:[edx]
0040230F  |.  3A01          |cmp al,byte ptr ds:[ecx]
00402311  |.  75 2B         |jnz short 六开挤线.0040233E
00402313  |.  0AC0          |or al,al
00402315  |.  74 24         |je short 六开挤线.0040233B
00402317  |.  3A61 01       |cmp ah,byte ptr ds:[ecx+0x1]
0040231A  |.  75 22         |jnz short 六开挤线.0040233E
0040231C  |.  0AE4          |or ah,ah
0040231E  |.  74 1B         |je short 六开挤线.0040233B
00402320  |.  C1E8 10       |shr eax,0x10
00402323  |.  3A41 02       |cmp al,byte ptr ds:[ecx+0x2]
00402326  |.  75 16         |jnz short 六开挤线.0040233E
00402328  |.  0AC0          |or al,al
0040232A  |.  74 0F         |je short 六开挤线.0040233B
0040232C  |.  3A61 03       |cmp ah,byte ptr ds:[ecx+0x3]
0040232F  |.  75 0D         |jnz short 六开挤线.0040233E
00402331  |.  83C1 04       |add ecx,0x4
00402334  |.  83C2 04       |add edx,0x4
00402337  |.  0AE4          |or ah,ah
00402339  |.^ 75 D2         \jnz short 六开挤线.0040230D
0040233B  |>  33C0          xor eax,eax    控制跳转时返回为0
0040233D  |.  C3            retn
0040233E  |>  1BC0          sbb eax,eax    控制跳转时返回为1
00402340  |.  D1E0          shl eax,1
00402342  |.  40            inc eax
00402343  |.  C3            retn
0040109A  |.  68 C2920152   push 0x520192C2  这里简称主窗体特征

易语言破解,不外乎关注EAX

注意远跳转

当字符串中存在以下字符串皆为老版本

老版本的查找字符串,就需要先找到

0040118A  |$  810424 761E00>add dword ptr ss:[esp],0x1E76
00401191  |.  FFD0          call eax

如果要找按钮事件,必须在我选中的这句里面去寻找

10028CCE    E8 4D050300     call krnln.10059220
10028CD3  - FFE0            jmp eax            EAX从这里进                      ; 梦幻风霜.00403000
10028CD5    EB 0E           jmp short krnln.10028CE5
10028CD7    8B55 08         mov edx,dword ptr ss:[ebp+0x8]           ; 梦幻风霜.00403000
10028CDA    52              push edx                                 ; ntdll.7C99C0D8
10028CDB    8B4D F8         mov ecx,dword ptr ss:[ebp-0x8]           ; krnln.1002979B
10028CDE    E8 3D050300     call krnln.10059220
10028CE3    FFD0            call eax            DLL从这里进                    ; 梦幻风霜.00403000

当出现上图的错误时,可以先锁定这样的地址JL和JNS
004770CC   /7C 0D           jl short 梦幻风霜.004770DB
004770CE   |68 01000000     push 0x1
004770D3   |E8 BA890000     call 梦幻风霜.0047FA92
004770D8   |83C4 04         add esp,0x4
004770DB   \C1E0 02         shl eax,0x2

A段必定有CALL调用下面一段,而调用A段的必定是A段的上面一段

(0)

相关推荐

  • 易语言EXUI支持库制作红色简约网络验证UI界面的代码

    红色简约网络验证UI界面 .版本 2 .支持库 exui .支持库 spec .程序集 窗口程序集_启动窗口 .程序集变量 用户名, 文本型 .程序集变量 状态码, 文本型 .子程序 _头像_框架_鼠标左键按下 .参数 xy坐标, 整数型 .参数 wp, 整数型 _启动窗口.发送信息 (161, 2, 0) .子程序 _选择夹EX1_鼠标左键按下 .参数 xy坐标, 整数型 .参数 wp, 整数型 _启动窗口.发送信息 (161, 2, 0) .子程序 _登录_输入账号_鼠标左键按下 .参数 x

  • 易语言的网络验证实现详解

    易语言就是一种脚本语言,他是采用的封装形式去完成 他在5.0以下版本时,都是采用的易语言开发环境的编译模式,同时是采用C++编译 他主要以中文编程,深受新手朋友欢迎,所以这这里,我也推荐大家去学习一下 易语言其实就像我们人穿着衣服一样的,需要看到内在的话,就需要先脱掉衣服,其实也就是和壳的类型相差无己 00445151 >/$  55            push ebp             ..载入程序后的入口 00445152  |.  8BEC          mov ebp,es

  • 易语言的输入字类型详解

    在程序中书写输入字时,可以使用一个半角符号来引导该输入字,以指定其类型.各输入字的类型引导符号为: 首拼及全拼输入字: 分号(";") 如: ;qz(1.23) 或 ;quzheng(1.23) 双拼输入字: 冒号(":") 如: :quvg(1.23) 英文输入字: 单引号(" '") 如: 'int(1.23) 系统具有一个当前默认输入法状态,如果某输入字前没有加上类型引导符号,则默认是属于该输入法的输入字.系统安装完毕后,当前默认输入法为&

  • 易语言操作数据库“取错误信息”命令详解

    如果执行某数据库命令失败,在其后执行本命令可以取回错误信息文本.如果该数据库命令执行成功,执行本命令将返回空文本. 语法: 文本型 取错误信息 () 例程: 说明: 首先把要操作的数据库打开,然后执行"写()"命令,程序将改写"改写字段编辑框"中输入的字段名,改写内容为"改写内容编辑框"的内容.如果改写成功,会弹出信息框显示"写入数据成功":如果改写失败,会弹出信息框提示失败,将本次操作的错误码和错误信息取出,并显示在信息框中

  • 易语言“是否支持多用户”命令详解

    检查本支持库所提供的数据库功能是否支持多用户同时对数据库操作.如果支持,返回真,否则返回假. 语法: 逻辑型 是否支持多用户 () 例程: 说明: 是否支持多用户命令,是检查当前的数据库,是否支持多用户同时进行操作,在检查数据库前,要先把待检查的数据库打开,如果本数据库支持多用户则返回真,否则,返回假. 用存放返回值的变量存放是否支持多用户命令的返回值,最后,用信息框查看本命令的返回值.如果此数据库支持多用户,信息框会显示"真",否则,显示"假". 到此这篇关于易语

  • 易语言操作数据库“替换打开”命令详解

    打开指定的数据库文件.成功返回真,并自动关闭当前数据库后将当前数据库设置为此数据库,失败返回假. 语法: 逻辑型 替换打开 (数据库文件名,[在程序中使用的别名],[是否只读],[共享方式],[保留参数1],[数据库密码],[索引文件表],- ) 参数名 描 述 数据库文件名 必需的:文本型. 在程序中使用的别名 可选的:文本型.别名为在后面的程序中引用本数据库时可使用的另一个名称.欲引用一个已经被打开的数据库可以使用该数据库本身的名称(数据库名称为数据库文件名的无路径和后缀部分.譬如 c:\m

  • 易语言数据库“全部关闭”命令详解

    本命令关闭当前已经被打开的所有数据库. 语法: 无返回值 全部关闭 () 例程: 说明: 启动窗口创建完毕和"打开数据库"按钮被按下都会打开2个数据库,"全部关闭"按钮被按下后,会运行"全部关闭()"命令,当前所有被打开的数据库都将被关闭,标签会显示当前"没有打开数据库".当启动窗口将被销毁前也会运行"全部关闭()"命令,在程序结束运行前将打开的数据库全部关闭. 到此这篇关于易语言数据库"全部关闭

  • 易语言数据库的“取库文件名”命令详解

    返回当前数据库的全路径文件名.如果当前数据库不存在,返回空文本. 语法: 文本型 取库文件名 () 例程: 说明: 启动窗口创建完毕后,打开2个数据库,并将打开数据库的全路径文件名存放再数组变量"已打开数据库名"中,当点击"显示库文件名"按钮,就将已经打开数据库的全路径文件名显示在列表框中,并显示出当前数据库名. 以上就是易语言数据库的"取库文件名"命令详解的详细内容,更多关于易语言取库文件名命令的资料请关注我们其它相关文章!

  • 易语言数据库操作“取记录数”命令详解

    返回当前数据库的记录数目.如果没有设置当前数据库或者失败,将返回 0 . 语法: 整数型 取记录数 () 例程: 说明: 当数据库打开成功,使用"取记录数()"命令,取出当前数据库中的记录数,使用该记录数来规定"记次循环()"命令的循环次数,通过循环,所有记录的"姓名"字段内容就显示在了列表框中. 到此这篇关于易语言数据库操作"取记录数"命令详解的文章就介绍到这了,更多相关易语言取记录数命令内容请搜索我们以前的文章或继续浏览下

  • 易语言数据库操作中“置当前索引”命令详解

    为当前数据库指定当前索引,在进行索引查找时将使用当前索引.如果指定索引不存在,将返回假. 语法: 逻辑型 置当前索引 (索引名称) 参数名 描 述 索引名称 必需的:文本型.索引名称为索引文件名的无后缀部分.譬如"sy.enx"索引文件,其索引名称为"sy". 例程: 说明: 在打开数据库的同时,打开2个索引文件,并添加到组合框中,当组合框的项目被选择,则使用"置当前索引()"命令,设置当前索引为组合框中选择的索引,并使用列表框显示当前索引的索引

  • 易语言数据库操作中“取当前索引”命令详解

    返回当前数据库的当前索引名称.如果未设置当前数据库或无当前索引,返回空文本. 语法: 文本型 取当前索引 () 例程: 说明: 当打开2个索引后,使用"取当前索引()"命令取出当前索引,并使用标签显示.当改变当前索引时,使用同样方法使用标签显示当前索引. 以上就是易语言数据库操作中"取当前索引"命令详解的详细内容,更多关于易语言取当前索引命令的资料请关注我们其它相关文章!

随机推荐