什么是高级API

录入时间:2014/3/18 13:26:37      最后更新:2017/4/29 14:32:51

服务端高级API是应答客户端tt_cmd("check","v_*,*")接口的专用d接口。

在客户端的模板例子中,已经用函数advapi("*")包装好了tt_cmd("check","*")

所以在本站的所有文档中,客户端的高级API调用我们一律用包装函数advapi()来代替

客户端调用advapi("接口")接口必须在服务端有相应的服务端高级API函数才可以使用。

服务端高级API在软件参数设置的高级API选项卡里边,使用的是标准php语法。

客户端advapi()发送数据过来时,服务端会先效验用户身份,然后才会执行相应的高级API接口。

高级API接口可操作数据库,可对数据进行加密,可实现自己的加解密算法。

开发自己的加解密算法时必须注意的是高级API的字符编码是utf-8

高级API实现扣点功能

扣点功能也是用advapi接口来实现的
客户端调用扣点方式:返回值=tt_advapi("v_points,要扣的点数")
扣点成功返回剩余的点数(可以通过判断返回值可不可以转化成整数来判断扣点是否成功),扣点失败返回错误信息
 

详细说明

服务端代码填写区:【软件参数设置】-> 【高级API】选项卡的那个多行文本框

该API是核心安全函数,合理使用本API可以最大限度的保护你的软件,本接口服务端会效验用户身份,验证没通过的不能获取数据
请适量适时使用该功能,因为本API使用时会连接网络(如果之前调用过相同参数的该API,此时会直接从缓存中读取,而不是连接网络重新获取。如果你想不论有没有缓存都直接从网络获取的话,请先调用tt_advapifree函数,并且参数要相同)。

 

	
注意:【自定义函数名只能用英文和数字,且必须以v_开头
        有关PHP的语法请参见
	PHP语法   http://www.php100.com/manual/w3school/php/index.asp.html
	PHP手册   http://cn.php.net/distributions/manual/php_manual_zh.chm	
         
	A、简单返回静态数据,不带参数
		客户端调用:
			返回值=tt_advapi("v_自定义函数名")
      
		

function v_自定义函数名(){

return '你想要返回的静态数据';

}

 
B、高级应用,提交参数给服务端【自定义函数】运算后返回值 客户端调用: 返回值1=tt_advapi("v_自定义函数名,参数1,参数2") 最多可传递9个参数

//注:客户端传几个参数过来,服务端相应自定义函数就要写几个参数,因为上边的语句我写了两个参数,所以下边服务端代码我也要写两个参数,$v1就是参数1,$v2就是参数2
function v_自定义函数名($v1,$v2){

//一个简单的运算,即把参数1乘以100,然后加参数2,赋值给一个变量
$tempvar=$v1*100+$v2;
return $tempvar; //把刚才得到的变量值返回给客户端

}

 
举一个简单的调用例子,服务端有两个自定义函数 服务端代码

function v_myfunaaa(){ //静态返回数据

return '我的数据123123';

}

function v_myfunbbb($var1,$var2){ //参数运算后返回数据

//一个简单的运算,即把参数1乘以5,然后加参数2,赋值给一个变量
$tempvar=$var1*5+$var2;
return $tempvar; //把刚才得到的变量值返回给客户端

}

 
客户端调用: 变量A=tt_advapi("v_myfunaaa") 变量B=tt_advapi("v_myfunbbb,100,200") 正常情况下变量A和B的值此时应该是如下 变量A="我的数据123123" 变量B="700" 注:服务端变量代入的算式是 100*5+200

 

如何使用tt_advapi保护软件数据?
    主要有两种方式(命令是死的,人是活的,思路很重要)。

1、这可能是有些用户第一时间想到的,对比返回值是不是等于某个值,不等于的话结束程序或让程序进入错误的执行流程,这种处理方式比较弱,不建议。
 


if tt_advapi("v_isok")<>"正常" then
    Call 关闭程序或执行错误流程
end if
 


 

相对应服务端代码


function v_isok(){

return '正常';

}
 


2、你程序里可能会有一些非常重要字符或数字变量是直接写在程序里的,例如

PS:我这里用中文语法写的例子,就算你不会易语言,是中国人的都应该看的懂吧
 

****** 读内存数据(#人物基址,十六进制到十进制("2F3")) ******
****** 读内存数据(#人物基址,456)) ******


用tt_advapi把这段代码的数据保护起来的写法如下
 

****** 读内存数据(#人物基址,十六进制到十进制(tt_advapi("v_getd1"))) ******
****** 读内存数据(#人物基址,到整数(tt_advapi("v_getd2")))) ******


相对应服务端代码
 


function v_getd1(){

return '2F3';

}

function v_getd2(){

return '456';

}
 

 Copyright 2013-2018 土默特左旗灵盾网络工作室 图图网络验证系统
     蒙ICP备15001097号