易语言驱动保护程
4.2.2 XX游戏驱动保护代码书写 -(50课)

4.2.2 XX游戏驱动保护代码书写-50课A、恢复NtOpenThreadB、恢复NtOpenProcess函数C、恢复NtReadVirtualMemory 让CE可读D、恢复NtWriteVirtualMemory让CE可写E、Ret指令详解F、Hook代码编写并测试G、过非法保护测试课时:44+4OpenProcess //NtOpenProcess+0x21E //SSDT 122OpenThread //NtOpenThread+0x214 //SSDT 128ReadProcessMemory //NtReadVirtualMemory+0 //SSDT 186WriteProcessMemory //NtWriteVirtualMemory+0 //SSDT 277Ret指令详解ret相当于 jmp dword ptr[esp];add esp,4;//但并不等价哟一、用 MmGetSystemRoutineAddress 取得NtOpenProcess和NtOpenThread的地址存放到PNtOpenProcess和PNtOpenThread中;二、通过特征码定位下边4个地址以增加兼容性DWORD NtOpenProcess_21E=0x805cc61a; //jmp myNtOpenProcessDWORD NtOpenThread_214=805cc89ch; //jmp myNtOpenThreadDWORD NtOpenThread_214_B=805cc8a7h; //Call ret AddrDWORD NtOpenProcess_21E_B=805cc625h;//Call ret Addr三、写HOOK代码===================================================笔记:杂音好大啊!A部分:将上节课代码复制过来修改一下,//nt!NtReadVirtualMemory://805b528a 6a1c push 1Ch//805b528c 68e8ae4d80 push offset nt!MmClaimParameterAdjustDownTime+0x90 (804daee8)DWORD Real_NtReadVirtualMemory_7 =0x805b5291;DWORD Real_NtWriteVirtualMemory_7=0x805b5394;DWORD NtOpenProcess_21E=0x805cc61a; //myNtOpenProcessDWORD NtOpenThread_214=0x805cc89c; //myNtOpenThreadDWORD NtOpenThread_214_B=0x805cc8a7;DWORD NtOpenProcess_21E_B=0x805cc625;PVOID PObOpenObjectByPointer,PNtOpenProcess,PNtOpenThread;DWORD ssdtaddr;#pragma PAGECODE__declspec(naked)VOID My_NtReadVirtualMemory(){//恢复前2条指令__asm{push 1Chpush 804daee8hjmp Real_NtReadVirtualMemory_7}}#pragma PAGECODE__declspec(naked)VOID My_NtWriteVirtualMemory(){//恢复前2条指令// nt!NtWriteVirtualMemory:// 805b5394 6a1c push 1Ch// 805b5396 6800af4d80 push offset nt!MmClaimParameterAdjustDownTime+0xa8 (804daf00)__asm{push 1Chpush 804daf00hjmp Real_NtWriteVirtualMemory_7}}// OpenProcess //NtOpenProcess+0x21E //SSDT 122// nt!NtOpenProcess+0x21e:// 805cc61a ff75c8 push dword ptr [ebp-38h] //jmp My_NtOpenPrcoess// 805cc61d ff75dc push dword ptr [ebp-24h]// 805cc620 e84706ffff call nt!ObOpenObjectByPointer (805bcc6c)// 805cc625 8bf8 mov edi,eax#pragma PAGECODE__declspec(naked)VOID My_NtOpenPrcoess(){//恢复前2条指令// nt!NtWriteVirtualMemory:// 805b5394 6a1c push 1Ch// 805b5396 6800af4d80 push offsetnt!MmClaimParameterAdjustDownTime+0xa8 (804daf00)__asm{push dword ptr [ebp-38h]push dword ptr [ebp-24h]push NtOpenProcess_21E_B //DWORD NtOpenProcess_21E_B=805cc625hjmp DWORD ptr [ PObOpenObjectByPointer] //(805bcc6c) ret c3 eipret//jmp NtOpenProcess_21E_B}}// OpenThread //NtOpenThread+0x214 //SSDT 128// 805cc89c ff75cc push dword ptr [ebp-34h] //jmp DWORD NtOpenThread_214=805cc89ch;// 805cc89f ff75e0 push dword ptr [ebp-20h]// 805cc8a2 e8c503ffff call nt!ObOpenObjectByPointer (805bcc6c)// 805cc8a7 8bf8 mov edi,eax#pragma PAGECODE__declspec(naked)VOID My_NtOpenThread(){//恢复前2条指令// nt!NtWriteVirtualMemory:// 805b5394 6a1c push 1Ch// 805b5396 6800af4d80 push offset nt!MmClaimParameterAdjustDownTime+0xa8 (804daf00)__asm{push dword ptr [ebp-34h]push dword ptr [ebp-20h]push NtOpenThread_214_B // DWORD NtOpenProcess_214_B=805cc8a7hjmp PObOpenObjectByPointer /*(805bcc6c)*///jmp NtOpenProcess_214_B}}#pragma PAGECODEVOID HOOK(){UNICODE_STRING Us_ObOpenObjectByPointer, Us_NtOpenProcess, Us_NtOpenThread;//建立变量RtlInitUnicodeString(&Us_ObOpenObjectByPointer,L"ObOpenObjectByPointer");//初始化RtlInitUnicodeString(&Us_NtOpenProcess,L"NtOpenProcess");//初始化RtlInitUnicodeString(&Us_NtOpenThread,L"NtOpenThread");//初始化PObOpenObjectByPointer=MmGetSystemRoutineAddress(&Us_ObOpenObjectByPointer); PNtOpenProcess=MmGetSystemRoutineAddress(&Us_NtOpenProcess);//获得OP函数地址PNtOpenThread=MmGetSystemRoutineAddress(&Us_NtOpenThread); //获得OT函数地址__asm{Cli //内存保护mov eax,cr0and eax,not 10000hmov cr0,eax_asm int 3// NtOpenProcess 还原mov ebx,NtOpenProcess_21Emov al,0xe9mov byte ptr [ebx+0],allea eax,My_NtOpenPrcoesssub eax,NtOpenProcess_21Esub eax,5mov [ebx+1],eax// NtOpenThread 还原mov ebx,NtOpenThread_214mov byte ptr [ebx+0],0xe9lea eax,My_NtOpenThread //通过公式计算sub eax,NtOpenThread_214sub eax,5mov [ebx+1],eax//ReadProcessMemory //NtReadVirtualMemory+0 //SSDT 186//WriteProcessMemory //NtWriteVirtualMemory+0 //SSDT 277mov eax, KeServiceDescriptorTablemov eax,[eax] //address of KeServiceDescriptorTablemov ssdtaddr,eaxmov eax,ssdtaddradd eax,2e8h //0xBA * 4 ntreadvirtualmemoryaddr ssdt186 lea ebx, My_NtReadVirtualMemory //建立自己地址写入mov ecx,[eax]add ecx,7mov Real_NtReadVirtualMemory_7,ecx//要跳回的地址mov [eax],ebx //HOOK成我们自己的SSDT 186 hook My_NtReadVirtualMemory mov eax,ssdtaddradd eax,454h //0x115*4 ntwritevirtualmemoryaddr ssdt227 lea ebx,My_NtWriteVirtualMemorymov ecx,[eax]add ecx,7mov Real_NtWriteVirtualMemory_7,ecx//要跳回的地址mov [eax],ebx//去掉内存保护mov eax,cr0or eax,10000hmov cr0,eaxsti}}写好代码后先虚拟机测试了一下没有成功,再次修改.这次好像正确了,用ME打开游戏扫描一下结果被检测到非法,那么将ME的SYS去掉再扫描一下.还是非法.B部分:老师将passtp.h加进去修改好错误后进行编译,然后在本机里进行测试,在加载了驱动之后用另一款ME就可以搜索到数据了,但是用CE还是非法,因为游戏本身有针对CE的检测.随记: 终于过了!老师功夫果然厉害!另外老师写代码也经常出错,我想我写代码出错就更多了,以后还是要一点一点的写,然后一点一点的测试,确保代码不出错的情况下再继续编写,否则出错真是闹心.。
易语言——精选推荐

易语⾔易语⾔百科名⽚易语⾔宣传banner易语⾔是⼀门计算机程序语⾔。
以“易”著称,以中⽂作为程序代码表达的语⾔形式。
易语⾔的创始⼈是吴涛。
早期版本的名字为E语⾔。
易语⾔最早的版本的发布可追溯⾄2000年9⽉11⽇。
可以说,创造易语⾔的初衷是进⾏⽤中⽂来编写程序的实践。
从2000年⾄今,易语⾔已经发展到⼀定的规模:功能上、⽤户数量上都⼗分可观。
⽬录简介常见代码⽰例缺点⽀持库模块更新历程相关信息展开编辑本段简介创建者:⼤连吴涛易语⾔(吴涛)易语⾔简称:e、VE、E语⾔最新版本:易语⾔5.11 (20101221) (⽀持静态编译)特⾊:第⼀个中国⼈⾃⼰打造的编程语⾔!★全中⽂⽀持,⽆需跨越英语门槛。
★全可视化编程,⽀持所见即所得程序界⾯设计和程序流程编码。
★中⽂语句快速录⼊。
提供多种内嵌专⽤输⼊法,彻底解决中⽂语句输⼊速度慢的问题。
★代码即⽂档。
⾃动规范强制代码格式转换,任何⼈编写的任何程序源代码格式均统⼀。
★参数引导技术,⽅便程序语句参数录⼊。
★⽆定义类关键字。
所有程序定义部分均采⽤表格填表⽅式,⽤户⽆需记忆此类关键字及其使⽤格式。
★命令格式统⼀。
所有程序语句调⽤格式完全⼀致。
★语法格式⾃动检查。
⾃动检查并提⽰所输⼊语句的语法格式是否正确,且可⾃动添加各类名称。
★全程提⽰与帮助。
⿏标停留即显⽰项⽬提⽰,编程时提⽰语法格式,调试时提⽰变量当前内容,按下F1键得到相关帮助等。
★名称⾃动管理。
⽤户修改任⼀名称定义,其它所有包含该名称的程序代码均⾃动修正。
★集成化开发环境。
集界⾯设计、代码编写、调试分析、编译打包等于⼀体。
★学习资源丰富。
详细的帮助⽂件、数⼗兆的知识库、数万⽤户的⽹上论坛、教材已出版发⾏……“易语⾔汉语编程环境”国家⽕炬计划证书已颁发2005年8⽉3⽇,国家科学技术部⽕炬⾼技术产业开发中⼼颁发“易语⾔汉语编程环境”国家⽕炬计划证书。
2005年5⽉由我公司申报的“易语⾔汉语编程环境”项⽬已被⽴项,项⽬编号:2005EB010211。
Windows内核和驱动进程保护

进 程 管 理 器
设 置 管 理 器
本 地 过 程 调 用
Configuratio n manager
Local process call
Plug and Play manager
Security reference monitor
Memory manager
Process manager
Object manager
添加串口(Serial Port),串口使用为\\.\pipe\com_1 选择为This end is the server和The other end is a virtul machine 在XP的启动引导文件boot.ini中添加 multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional (Debug Mode)" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
Explorer User application Subsystem DLLs
POSIX Windows DLLs
NTDLL.DLL User Mode Ring 3 Ring 0 System Service Dispatcher(系统服务) (Kernel mode callable interfaces)(执行体API)
Task Manager
Service control manager
Local Security Authority Winlogon Wininit Windows DLLs
Environment Subsystem
易语言virtualprotectex写法

易语言virtualprotectex写法易语言是一种初学者友好的编程语言,其简单易懂的语法和丰富的函数库使得编写程序变得容易。
而其中的VirtualProtectEx函数,作为操作系统提供的一个重要功能,用于修改进程的内存保护属性。
本篇文章将以"易语言VirtualProtectEx写法"为主题,详细介绍如何使用易语言中的VirtualProtectEx函数,并给出一步一步的回答。
首先,我们需要了解VirtualProtectEx函数的基本功能和用法。
VirtualProtectEx函数被用来修改进程内存页的保护属性,包括读取、写入、执行和访问权限。
通过修改这些保护属性,我们可以实现对内存的直接操作,以达到我们的编程需求。
在易语言中,我们首先需要导入VirtualProtectEx函数的声明,它位于kernel32.dll库中。
将下面的代码放在程序的开头,以引入VirtualProtectEx函数的声明:DECLARE FUNCTION VirtualProtectEx LIB "kernel32.dll" ALIAS "VirtualProtectEx" (BYVAL hProcess AS LONG, BYREF lpAddress AS ANY, BYVAL dwSize AS LONG, BYVAL flNewProtect AS LONG, BYREF lpflOldProtect AS LONG) AS LONG在这个声明中,我们可以看到VirtualProtectEx函数的参数,包括进程句柄(hProcess),内存地址(lpAddress),内存大小(dwSize),新的保护属性(flNewProtect)和旧的保护属性(lpflOldProtect)。
接下来,我们需要获取目标进程的句柄。
在易语言中,可以使用OpenProcess函数来获取指定进程的句柄。
易语言最新防破解

易语言最新防破解以下内容来源于酷夫软件工作室作者QQ:1696043190需要合作请联系QQ。
ZProtect//Code_Confusion是代码乱序加密标记,允许您选择一部分被乱序的代码置入代码({235,8,83,84,95,83,84,65,82,84})' Code_Confusion标记开始置入代码({235,8,83,84,95,83,84,69,78,68})' Code_Confusion标记结尾//Code_Elimination是代码清除标记,允许您选择一部分代码在运行后从内存中删除;使用此标记的目的是为了防止破解者从内存中转储出完整的程序代码。
置入代码({235,8,79,67,95,83,84,65,82,84})' Code_Elimination标记开始置入代码({235,8,79,67,95,79,67,69,78,68})' Code_Elimination标记结尾//Decode_onExec是动态解码标记,允许您选择一部分只在执行时才解密的代码段;这部分代码仅在需要执行时才解码,执行前和执行后均处于加密状态置入代码({235,8,68,89,95,83,84,65,82,84})//Decode_onExec 标记开始置入代码({235,8,68,89,95,68,89,69,78,68})//Decode_onExec 标记结尾//Decode_onReg是注册解码标记,允许您选择一部分使用有效密钥才解密的代码;如果注册密钥不正确,那么这部分代码将永远处于加密状态。
通俗地讲,这部分代码仅在注册版中执行//源代码中可以使用任意数量的Decode_onReg标记,但是这些代码段在执行时会同时解密。
注册解码标记主要用于激活未注册版中被限制的功能,使之注册成为完整版。
置入代码({235,8,82,68,95,83,84,65,82,84})//Decode_onReg标记开始置入代码({235,8,82,68,95,82,68,69,78,68})//Decode_onReg标记结尾//Zprotect_VM是虚拟机加密标记,允许您选择一部分代码放到虚拟机中运行;虚拟机的指令系统是完全不同于现有的x86指令,可以有效阻止代码还原及分析置入代码({235,8,86,77,95,83,84,65,82,84})//Zprotect_VM标记开始置入代码({235,8,86,77,95,86,77,69,78,68})//Zprotect_VM标记结尾-----------适用于ZProtect V1.4.9.0版本---------VMProtect.易的SDK置入代码({235,16,86,77,80,114,111,116,101,99,116,32,98, 101,103,105,110,0})'VMP保护开始标志'关键代码置入代码({235,14,86,77,80,114,111,116,101,99,116,32,101, 110,100,0})'VMP保护结束标志Enigma加密易语言的SDK置入代码({235,10,69,67,82,79,78,69,88,69,67,66})'标记开始处'关键代码置入代码({235,10,69,67,82,79,78,69,88,69,67,69})'标记结束处NoobyProtect加密易语言的SDK置入代码({235,6,78,80,66,69,71,78})'标记开始处'关键代码置入代码({235,6,78,80,69,78,68,80})'标记结束处穿山甲调用功能型加密易语言SDK的DEMO置入代码({235,3,214,215,1})'标记开始处'关键代码置入代码({235,3,214,215,0})'标记结束处ASP加密易语言SDK置入代码({235,4,235,5,25,1,233,37,0})'标记开始处'关键代码置入代码({235,4,235,5,41,1,233,133,0,})'标记结束处Shielden2.0.1.0置入代码({235,7,83,69,66,69,71,78,0})' SE_PROTECT_START'关键代码置入代码({235,7,83,69,69,78,68,80,0})'SE_PROTECT_END 置入代码({235,7,83,69,66,69,71,78,77})' SE_PROTECT_START_MUTATION关键代码置入代码({235,7,83,69,69,78,68,80,0})'SE_PROTECT_END 置入代码({235,7,83,69,66,69,71,78,85})' SE_PROTECT_START_ULTRA关键代码置入代码({235,7,83,69,69,78,68,80,0})'SE_PROTECT_END置入代码({235,7,83,69,66,69,71,78,86})''关键代码置入代码({235,7,83,69,69,78,68,80,0})'SE_PROTECT_END 易语言SDK转换方法↓随着E5.0静态编译对标准PE格式的支持,在E程序中引入加密壳SDK提升软件保护质量已经成为现实。
新手必学的易语言教程

冯·诺依曼设计思想最重要之处在于明确地提出了“程序存储”的 概 念 , 他的全部设计思想实际上是对“程序存储和程序控制”概念的具体化。 迄今为止,计算机的工作原理仍然采用存储程序和程序控制原理,计算机 一系列的工作是根据指令功能控制程序的执行来完成的。 2.计算机中数据的表示方法 由组成计算机硬件电路的特性决定,计算机中的数据由 0,1 两个二进制数 表示。现代计算机不仅处理数值领域的问题, 而且处理大量非数值领域的问题。 这样一来,必然要引入文字、字母以及某些专用符号,以便表示文字语言、逻 辑语言等信息。 那么,一个数字或者一个字符在计算机中具体是如何表示的呢? 目前国际上普遍采用的字符系统是 ASCII 码(美国国家信息交换标准字符 码)。ASCII 码规定 8 个二进制位的最高一位为 0,余下的 7 位可以给出 128 个编 码,表示 128 个不同的字符。 其中 95 个编码,对应着计算机终端能输入并且可以 显示的 95 个字符,打印机设备也能打印这 95 个字符,如大小写各 26 个英文字 母,0—9 这 10 个数字符,通用的运算符和标点符号+,-,*,/,>,=,< 等等。另 外的 33 个字符,其编码值为 0—31 和 127,则不对应任何一个可以显示或打印的 实际字符,它们被用作控制码,控制计算机某些外围设备的工作特性和某些计算 机软件的运行情况。 3.指令、程序和软件
指令是计算机要执行的一种基本操作命令,是对计算机进行程序控制的最 小单位。 程序是一组指令序列,并取以文件名,称为程序文件。计算机的工作原理 是先将需要执行的程序从外存中读入内存,由 CPU 负责逐条读取指令,然后再 执行,直到遇到结束指令。 软件是指计算机程序及其有关的文档,它可以分为系统软件和应用软件两 大类。 系统软件是负责管理、控制、维护、开发计算机的软硬件资源,提供用户 一个便利的操作界面和提供编制应用软件的资源环境。其中最主要的是操作系 统,其他还有语言处理程序、系统实用程序、各种工具软件等。 操作系统(OS)是对所有软硬件资源进行管理、高度及分配的核心软件, 用户操作计算机实际上是通过使用操作系统来进行的,它是所有软件的基础和 核心。 应用软件是为解决实际问题而专门编制的程序,如字处理软件(WORD) 、 辅助设计软件 (AutoCAD) 、 绘图计算软件 (几何画板) 、 计算机维护软件 (Norton)、 杀毒软件(KV3000)等。 应用软件与系统软件的关系如下图 1-2 所示:
易语言循环语句教程[教学]
易语言循环语句教程[教学]3.3循环类命令前面讲的是判断型命令,在这里要讨论的是循环类命令。
循环类命令有四个,分别是:判断循环首()、循环判断首()、计次循环首()、变量循环首。
如果记不住,可以在支持库面板中找到。
如本章开始一样,制作这样一个程序界面。
双击按钮控件,进入程序代码录入界面。
新增加一个变量,变量名为“变量1”,类型为整数型。
再输入四行程序代码。
按下F5快捷键,试运行这个程序,并且点击其中的按钮,可以看到编辑框中依次显示从1到10的数字。
原来上述4行的对应含意是:判断循环首,变量1 ? 10, //当变量1不为10时即进行循环变量1 , 变量1 , 1 //变量1累计加1编辑框1.加入文本,到文本,变量1,+#换行符, //在编辑框1中显示变量1的内容判断循环尾,, //返回循环首通过以上即可以实现循环显示1到10了。
“判断循环首”是先判断再循环,而“循环判断首”是先循环再判断。
所以两者是有区别的。
下面将上述例子中的程序删除,输入以下语句:循环判断首,, //循环开始变量1 ,变量1 , 1 //变量1累计加1编辑框1.加入文本,到文本,变量1,+#换行符, //在编辑框1中显示变量1的内容循环判断尾,容器1 ? 10, //当变量1不为10时即进行返回循环首运行后,效果一样,也可以循环显示从1到10。
,试运行这个程序,并且点击其中的按钮,可以看到编辑框中依次显示从1到10的数字。
重新输入以下程序:计次循环首,10~变量1, 计次循环开始~变量1累加到10编辑框1.加入文本,到文本,变量1,+#换行符, 在编辑框1中显示变量1的内容计次循环尾,, 返回循环首运行后,效果一样,也可以循环显示从1到10。
试着将上述程序改成以下:变量循环首,1~10~1~变量1, //循环,从1开始,到10结束,步进为1,存入变量1编辑框1.加入文本,到文本,变量1,+#换行符, //在编辑框1中显示变量1的内容容器循环尾,, //返回循环首运行后,效果一样,也可以循环显示从1到10。
易语言软件加密技术
注:本文章是从网上转摘过来的,虽是拿易语言举例,但也适用所有的语言,包括按键脚本,关键是学习思路。
本文为全中文编写,不需要有PE文件格式知识,不需要掌握汇编或C语言的编程技巧,一些加密算法直接由易语言提供,特殊的加密算法大家可以翻译C语言代码、汇编代码或VB 代码。
本文中将“Cracker”一词翻译为“奸人”,意为“奸邪小人”之义。
本人对破解者一向深恶痛绝,有人说中国的软件发展中破解者有一份功劳,可我说这话不对,看看因盗版而产生的微软对操作系统及软件业的垄断,国软件业在盗版的夹缝中生存……,如此下去,软件作者没有收益,将不再会有优秀的软件推出。
防止盗版,匹夫有责,我想通过本书的推出可以加强易语言用户的加密能力,将盗版杀死在大家共同的手中。
随着采用易语言编制程序的人们越来越多,写一个软件易被奸人破解的情况也越来越多了,有个别用户甚至于怀疑易语言是否有安全性。
从技术性上来说,我只能说加密技术与编程语言无关,一个编程语言的安全性一般指所生成的机器码是否稳定、可靠,而不是防破解方面,如果想要很好地防止破解,那么掌握一门加密技术是非常必要的。
本书考虑到使用易语言的用户大部分对PE文件结构不太熟悉,因此没有采用很底层的方法去教学,而是采用与易语言直接表达的方式试图说明如何加密。
本书基本上是按以下的顺序进行讲解的:破解技术反破解技术1 反破解技术2 反破解技术3防改文件文件名验证 LOGO图片验证窗口标题验证防改文件大小暴破加壳后数据签名验证加壳后CRC验证文件大小验证防调试花指令反调试模块反调试支持库存注册机不进行判断,用循环代替字符串打乱器及时清存算法注册机 RSA算法数值计算支持库其他多处验证点随机验证命名刻意隐蔽本书是集体创作作品,并集成了多位作者的公开著述,在此一并表示感。
其中部分文字容根据易语言的特性作了修正。
文中不署这些作者的,以防止奸人对他们的软件的刻意破解。
本章整理:麻辣教师目录《易语言软件加密技术》 1一.易语言程序加密的目的 51.保持软件的完整性 52、保护软件开发者的权益 5二.易语言程序加密的原则 51.加密前要考虑周到且严密 52.需要加密的容要制定一个计划 63.加密时制作好文档,以备以后的修改 6 4.发布前问一下是否可以正式发布软件了 6 三.防止程序容被更改 71.防止软件名称被更改 72.防止窗口标题被更改 73.防止LOGO图片被更改 8四.防止存注册机 81.不要使用简单判断 92.采用MD5对比 93.多注册码拷贝 9五.防止文件被暴破 101.常用加壳软件介绍 102.加壳后文件大小验证 143.加壳后数据签名验证 144.加壳后CRC验证 15六.防调试方法 161.易语言的花指令 162.反调试模块的使用 173.反调试支持库的使用 174.通过检查父进程得知是否被调试了 18 5.使用多线程 19七.注册机制 191.简单注册原理 192.RSA算法注册 203.数值计算支持库 27八.给奸人一些教训 271.给破解者的教训 272.给破解版使用者的教训 303.行为不要过火 30九.网络验证法 301.实现的原理 302.存在的几个问题 31十.加密狗加密 311.加密狗的选用 322.加密狗加壳法 333.加密狗写存储器法 33十一.加密算法策略(暗桩) 341.易数据库密码怎么泻露了 342.利用吴氏加密算法 373.海岛挖宝 384.随机验证 395.不同权限验证 406.忽悠型的GHOFFICE过滤词语验证代码 41 7.伪验证技术 438.定时验证、延时验证、客户数据集累验证 449.验证与专业知识相结合技术 4410.伪装,用易语言写自有支持库 4411.绝妙的暗桩设置 4512.发布不完整版本 4513.程序、数据结合加密技术 4514.自定义算法 4615.加密框图 46附录1加密已形成密码学 48附录2《如何用简单方法防止破解》 49附录3代码与数据结合技术 50(正文)一.易语言程序加密的目的在此有必要说明一下为何要为自己的程序进行加密,初步认为有以下两点:1.保持软件的完整性这里包括了文件名不被更改,文件信息不被更改,文件尺寸不被更改。
易语言控件
前言:对易语言的窗口单元(控件)的描述应包含以下几项内容:⑴、该控件的概念(主要着眼于用途方面);⑵、该控件使用的简要说明;⑶、该控件的属性、方法和事件。
在易语言的帮助里对各种控件的属性、方法和事件有较详细的解说,但对每样控件是什么东西却没有解析。
对于编程一无所知的初学者来说,一开始可能连控件是什么都不清楚,更不必说每个具体的控件的含义及其用途了,因而我们有必要解析清楚每个控件是什么东西、有什么用途、怎样使用。
建议:最好在帮助文件和提示窗口里将以下内容添加进去,比如选中某个对象时,会在提示窗口出现相应提示。
㈠、窗口(窗体)(FORM)。
⑴、功能:是一种包容型窗口单元(容器控件)。
窗口是呈现在用户面前的应用程序的界面。
我们的应用程序所使用的控件就是放在它的上面。
⑵、特点:一个应用程序可能只有一个窗口,也可能有多个窗口。
⑶、使用:在使用一个窗口时,如果把窗口的类型设置为“无边框”,运行程序时,就不能改变这个窗口的大小了,而且还要对这个窗口的关闭进行事件设置,比如“按钮1.被单击→销毁()”或“鼠标右键被按下→销毁()”之类。
㈡、编辑框(text)。
⑴、功能:它是易语言唯一能够进行文本(包括文字、数字等)输入的控件,故而又可称为文本框。
它可以用来输入信息或显示信息,例如输入口令等,也可以作为信息输出、记录内容的窗口。
⑵、使用:编辑框中的文本可以编辑,也可以通过将输入方式的属性值设为只读而不可编辑。
编辑框还可以实现多行显示、输入密码、自动换行以及滚动条等功能。
它的“内容”属性(主功能属性)用来设置输入的文本,可以在属性窗口设置,也可以在运行程序时用代码加载,如:编辑框1.内容=“祖国,你好!”。
㈢、图片框(picture)。
⑴、功能:是一种包容型窗口单元。
用来显示图形,包括位图、图标文件、.jpeg 或.gif文件格式的图形。
⑵、使用:它的“图片”属性(主功能属性)用来设置装载的图形,可以在属性窗口设置,也可以在运行程序时用代码加载,如“图片框1.图片=关之琳.gif ”。
易语言代码输入技巧
易语⾔代码输⼊技巧易语⾔代码输⼊技巧易语⾔3.8之前的版本,输⼊代码的⽅法为:每输⼊⼀⾏程序,必须使⽤回车键确认,否则将⾃动保存为草稿。
⽽继4.0之后,易语⾔的代码区⽀持⽂本输⼊⽅法,⽤户只需要要按着⽂本的正常输⼊⽅法输⼊代码即可,⽆需以前的输⼊⽅法。
1.4.1 内置输⼊法1(拼⾳输⼊法易语⾔内置4种名称输⼊法:⾸拼、全拼、双拼、英⽂。
使⽤为了便于输⼊程序代码,菜单“⼯具”?“系统配置”弹出“系统配置对话框”,如图1-17所⽰。
图1-17 系统配置对话框3种拼⾳输⼊法均⽀持南⽅⾳及多⾳字。
⾸拼输⼊法及全拼输⼊法在系统中被合并为“⾸拼及全拼输⼊法”,系统⾃动判别所输⼊的拼⾳是⾸拼⽅式还是全拼⽅式。
双拼输⼊法的编码规则与Windows系统所提供的双拼输⼊法⼀致。
例如:欲输⼊“取整(1.23)”语句,各种输⼊法的输⼊⽂本如下。
⾸拼输⼊法:qz (1.23)全拼输⼊法:quzheng (1.23)双拼输⼊法:quvg (1.23)英⽂输⼊法:int (1.23)以上各种输⼊法的名称部分输⼊⽂本(如:qz,quzheng,quvg,int)简称为“输⼊字”。
拼⾳类输⼊法的输⼊字(如:qz,quzheng,quvg)简称为“拼⾳输⼊字”。
⾸拼及全拼输⼊法的输⼊字简称为“⾸拼及全拼输⼊字”,双拼输⼊法的输⼊字简称为“双拼输⼊字”。
输⼊字可以⽤来输⼊程序中所涉及到的⼀切名称,包括:, 所有当前运⾏⽀持库中所提供的命令、窗⼝和报表单元数据类型及其属性和⽅法、普通数据类型及其成员和⽅法、库定义常量等名称。
, ⽤户在程序中定义的⼦程序参数、⼦程序局部变量、程序集变量、全局变量名称。
, ⽤户定义的⼦程序、Dll外部命令名称。
, ⽤户定义的数据类型及其成员名称。
, ⽤户所加⼊的资源和所定义的常量的名称。
, ⽤户在设计窗⼝或报表时所定义的组件、菜单项⽬或报表单元名称。
, 系统数据类型名称。
如:“整数型”、“⼩数型”等等。
, 系统常量名称。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
易语言驱动保护程
————————————————————————————————作者:————————————————————————————————日期:
禁止内存读写数据技术,在游戏驱动保护中经常运用到,游戏公司技术员,
为防止CE任何调试工具和辅助程序读写游戏进程里的内存数据,通常会运用R0级内核技术来禁止对游戏进程内存数据读写操作。
一旦游戏进程内存读写被禁止了,那么CE和辅助读写游戏进程内存数据就都是??这个问号符号了,或者是0了
然而这项技术并不是只属于游戏,在当今时代,内存辅助的数据甚至比游戏数据来得更宝贵,更有价值,
因为一个内存辅助程序里,它包含里游戏的各种数据的基址和偏移量,等数据信息,
这个时候如果你的内存辅助不进行保护进程里的内存读写操作(也就是禁止其他软件对自己程序中内存读写操作),
那么就有可能你的辅助程序会被其他人偷取你辅助程序里的游戏数据信息,
他会直接偷取后拿着你辅助里现成的游戏数据信息,编写出他的辅助程序,这样他就不需要去分析游戏数据了,
而只需分析你的辅助程序,就可以轻而易举写出他的辅助,这样的话你的辅助程序就等于为他做嫁衣了!
所以要杜绝这种辅助内存数据被其他人偷窃,就得学会保护禁止其他程序来访问读写你的辅助程序内存数据,
这个时候,我们不妨学学游戏公司的驱动保护一样,用RO级驱动保护自己程序的内存读写数据操作,
Game-EC 模块从6.7版本,正式踏入驱动版,支持XP sp3 系统和Win7 32位系统,
模块里新加入了专门保护内存不被其他程序读写的驱动级的命令:驱动_保护内存( )
这里就讲解写如何使用进行保护自己的程序不被其他程序读写内存数据,
在使用模块中任何驱动命令之前,必须先执行加载相关系统的驱动命令
就得先使用:驱动_加载命令进行加载模块专用的驱动程序,
否则你将无法使用驱动_保护内存或其他驱动命令。
现在以win7 32位系统为例,我们来写一个保护自己程序内存数据不被其他程序读写的例子
本节的例子代码如下:
示范源代码:
以上是win7 32位系统的代码,注意驱动只能在win7 32位系统或xp sp3 系统中使用,否则在其他系统或64位系统使用的话可能会蓝屏哦,
如果在2003系统或其他版本系统中使用,蓝屏了,记得报告老师,我们将改进并且让驱动去兼容你的系统(但64位系统除外)。
效果如下:
我们用CE内存搜索工具附加我们的小例子,这个时候,我们的小例子程序,还没有启动保护自己内存,
CE是可以搜索到任何数据值的地址的例如:
可以看见,没有被保护内存读写的程序,是可以被其他程序(例如CE)进行读写内存数据信息的。
但是假如,我们进行保护内存读写操作,禁止其他程序读写我们的小例子程序的内存信息,那会结果是咋样的呢
如下:
上图的动画可以看见效果,保护开启后,CE无法读取到我们例子程序里的内存数据信息,甚至都无法搜索出任何数据地址
取消保护后,CE就又可以读写我们的程序里内存数据信息了。
{:100_168:}
其实,现在游戏也经常惯用这种驱动保护手段,来保护游戏进程内存不被其他程序读写数据信息!。