基于Lua语言的编程方法和装置制造方法及图纸

技术编号:10945524 阅读:108 留言:0更新日期:2015-01-22 22:50
本发明专利技术公开了一种基于Lua语言的编程方法和装置,属于计算机技术领域。所述方法包括:为Lua语言实现调用应用程序编程接口API的功能;为Lua语言实现创建内存对象的功能;基于具备调用API功能和创建内存对象功能的Lua语言,实现目标程序代码。本发明专利技术通过为Lua语言扩展调用API的功能和创建内存对象的功能,从而能够基于Lua语言实现目标程序代码,则目标程序代码中将保存Lua语言编译后的字节码,Lua语言的字节码的反编译的难度较大,反编译工具很难反编译Lua语言的字节码,提高了破解难度,避免了对用户造成的损失。

【技术实现步骤摘要】

本专利技术涉及计算机
,特别涉及一种基于Lua语言的编程方法和装置
技术介绍
软件的应用程序通常是由C语言实现的,但随着IDA(Interactive Disassembler,交互式反汇编程序)、OD(OllyDebug)等反编译工具的盛行,破解者可以通过这些反编译工具跟踪应用程序所调用的每一个API(Application Programming Interface,应用程序编程接口)以及API的参数和返回结果,大大降低了破解难度。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种基于Lua语言的编程方法和装置。所述技术方案如下:第一方面,提供了一种基于Lua语言的编程方法,所述方法包括:为Lua语言实现调用应用程序编程接口API的功能;为Lua语言实现创建内存对象的功能;基于具备调用API功能和创建内存对象功能的Lua语言,实现目标程序代码。第二方面,提供了一种基于Lua语言的编程装置,所述装置包括:第一功能实现模块,用于为Lua语言实现调用应用程序编程接口API的功能;第二功能实现模块,用于为Lua语言实现创建内存对象的功能;代码实现模块,用于基于具备调用API功能和创建内存对象功能的Lua语言,实现目标程序代码。本专利技术实施例提供的技术方案带来的有益效果是:本专利技术实施例提供的方法和装置,通过为Lua语言扩展调用API的功能和创建内存对象的功能,从而能够基于Lua语言实现目标程序代码,则目标程序代码中将保存Lua语言编译后的字节码,Lua语言的字节码的反编译的难度较大,反编译工具很难反编译Lua语言的字节码,提高了破解难度,避免了对用户造成的损失。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的一种基于Lua语言的编程方法的流程图;图2a是本专利技术实施例提供的一种基于Lua语言的编程方法的流程图;图2b是本专利技术实施例提供了一种C++语言的代码示意图;图2c是本专利技术实施例提供的一种Lua语言的代码示意图;图2d是本专利技术实施例提供的获取API地址的流程示意图;图2e是本专利技术实施例提供的调用API的流程示意图;图3是本专利技术实施例提供的一种基于Lua语言的编程装置结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在对本专利技术实施例进行说明之前,首先对本专利技术实施例涉及的Lua语言进行介绍:Lua语言是一种嵌入式脚本语言,主要用于嵌入基于其他语言的应用程序中,与该应用程序协同工作,数据可以在其他语言环境与Lua语言环境之间共享。Lua语言基于虚拟机实现,Lua语言首先会将源程序编译成为字节码,然后交由虚拟机来解释执行。由于虚拟机本身的实现机制及其复杂,一个Lua指令需要上百个指令来执行,因此,Lua语言的字节码很难被IDA、OD等反编译工具破解。但是,由于Lua语言不具备调用API的功能和创建内存对象的功能,导致Lua语言无法独立地应用于应用程序代码的编写,只能嵌入到基于其他语言的应用程序代码中,因此,目前很少将Lua语言应用于编程。图1是本专利技术实施例提供的一种基于Lua语言的编程方法的流程图,参见图1,该方法包括:101、为Lua语言实现调用应用程序编程接口API的功能。102、为Lua语言实现创建内存对象的功能。103、基于具备调用API功能和创建内存对象功能的Lua语言,实现目标程序代码。本专利技术实施例提供的方法,通过为Lua语言扩展调用API的功能和创建内存对象的功能,从而能够基于Lua语言实现目标程序代码,则目标程序代码中将保存Lua语言编译后的字节码,Lua语言的字节码的反编译的难度较大,反编译工具很难反编译Lua语言的字节码,提高了破解难度,避免了对用户造成的损失。可选地,该为Lua语言实现调用应用程序编程接口API的功能包括:基于预设开发语言,生成指定调用函数,该指定调用函数用于调用不同的应用程序编程接口API,该预设开发语言具备调用API的功能;基于该预设开发语言,将该指定调用函数添加至Lua语言的全局表,使得Lua语言具备调用API的功能;根据该全局表中的指定调用函数,基于Lua语言调用API。可选地,该根据该全局表中的指定调用函数,基于Lua语言调用API包括:基于该预设开发语言,从动态链接库DLL的导出表中,获取待调用的API地址,将该待调用的API地址存放在该指定调用函数的闭包中;基于该预设开发语言,从该指定调用函数的闭包中,获取待调用的API地址,根据该API地址,获取该API在运行时所需的参数,将获取到的API地址和参数压入堆栈;基于Lua语言,从该堆栈中获取该API地址和该参数,基于该API地址、该参数和该全局表中的指定调用函数,调用该API,得到该API的返回值,将该返回值压入该堆栈;基于该预设开发语言,从该堆栈中获取该返回值。可选地,该为Lua语言实现创建内存对象的功能包括:基于该预设开发语言,定义一个结构体,该结构体包括一个内存的指针和内存长度;基于该预设开发语言,实现第一函数和第二函数,该第一函数用于获取该结构体的内存指针,该第二函数用于获取该结构体的内存长度;基于该预设开发语言,创建一个元表,将该第一函数和该第二函数添加至该元表,使得该元表具备获取该结构体的内存指针和内存长度的功能;将该元表添加至Lua语言的全局表,使得Lua语言具备创建内存对象的功能;其中,该预设开发语言具备创建内存对象的功能。可选地,该为Lua语言实现创建内存对象的功能还包括:基于该预设开发语言,实现第三函数,该第三函数用于释放该结构体;将该第一函数、该第二函数和该第三函数添加至该元表。可选地,该方法还包括:基于Lua语言,创建一个指定程序段;基于Lua语言,将该全局表中的元表设置给该指定程序段,则该指定程序段用于创本文档来自技高网...

【技术保护点】
一种基于Lua语言的编程方法,其特征在于,所述方法包括:为Lua语言实现调用应用程序编程接口API的功能;为Lua语言实现创建内存对象的功能;基于具备调用API功能和创建内存对象功能的Lua语言,实现目标程序代码。

【技术特征摘要】
1.一种基于Lua语言的编程方法,其特征在于,所述方法包括:
为Lua语言实现调用应用程序编程接口API的功能;
为Lua语言实现创建内存对象的功能;
基于具备调用API功能和创建内存对象功能的Lua语言,实现目标程序代
码。
2.根据权利要求1所述的方法,其特征在于,所述为Lua语言实现调用应
用程序编程接口API的功能包括:
基于预设开发语言,生成指定调用函数,所述指定调用函数用于调用不同
的应用程序编程接口API,所述预设开发语言具备调用API的功能;
基于所述预设开发语言,将所述指定调用函数添加至Lua语言的全局表,
使得Lua语言具备调用API的功能;
根据所述全局表中的指定调用函数,基于Lua语言调用API。
3.根据权利要求2所述的方法,其特征在于,所述根据所述全局表中的指
定调用函数,基于Lua语言调用API包括:
基于所述预设开发语言,从动态链接库DLL的导出表中,获取待调用的API
地址,将所述待调用的API地址存放在所述指定调用函数的闭包中;
基于所述预设开发语言,从所述指定调用函数的闭包中,获取待调用的API
地址,根据所述API地址,获取所述API在运行时所需的参数,将获取到的API
地址和参数压入堆栈;
基于Lua语言,从所述堆栈中获取所述API地址和所述参数,基于所述API
地址、所述参数和所述全局表中的指定调用函数,调用所述API,得到所述API
的返回值,将所述返回值压入所述堆栈;
基于所述预设开发语言,从所述堆栈中获取所述返回值。
4.根据权利要求1所述的方法,其特征在于,所述为Lua语言实现创建内
存对象的功能包括:
基于所述预设开发语言,定义一个结构体,所述结构体包括一个内存的指
针和内存长度;
基于所述预设开发语言,实现第一函数和第二函数,所述第一函数用于获
取所述结构体的内存指针,所述第二函数用于获取所述结构体的内存长度;
基于所述预设开发语言,创建一个元表,将所述第一函数和所述第二函数
添加至所述元表,使得所述元表具备获取所述结构体的内存指针和内存长度的
功能;
将所述元表添加至Lua语言的全局表,使得Lua语言具备创建内存对象的
功能;
其中,所述预设开发语言具备创建内存对象的功能。
5.根据权利要求4所述的方法,其特征在于,所述为Lua语言实现创建内
存对象的功能还包括:
基于所述预设开发语言,实现第三函数,所述第三函数用于释放所述结构
体;
将所述第一函数、所述第二函数和所述第三函数添加至所述元表。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
基于Lua语言,创建一个指定程序段;
基于Lua语言,将所述全局表中的元表设置给所述指定程序段,则所述指
定程序段用于创建内存对象。
7.根据权利要求1所述的方法,其特征在于,所述基于具备调用API功能
和创建内存对象功能的Lua语言,实现目标程序代码之后,所述方法还包括:
删除所述目标程序代码对应的调试文件,以去除所述目标程序代码的调试
功能。
8.一种基于Lua语言的编程装置,其特征在于,所述装置包括:
第一功能实现模块,用于为Lua语言实现调用应用程序编程接口A...

【专利技术属性】
技术研发人员:黄俊
申请(专利权)人:广州华多网络科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1