API函数:IPC_advapi

录入时间:2015-2-10 23:48:26      最后更新:2015-9-10 23:48:26

注:该接口为IPC进程通讯模式【子进程专用】。
按键插件无此接口。

API名 返回值类型 功能描述
IPC_advapi String 安全核心功能,发送字符串参数,送交服务器运算,服务端运算后返回字符串,客户端会将反回的字符串保存到缓存,以便下次快速读取
参数名 类型 备注
v_expression String 发送给服务端的特殊结构字符串,如:"v_funname,参数1,参数1,...,参数n"
动态库DLL是用Delphi编程语言开发的,IPC_advapi接口原型如下。

Function IPC_advapi(v_expression:PansiChar):PansiChar;stdcall;

扣点功能

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

详细说明

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

该API是核心安全函数,合理使用本API可以最大限度的保护你的软件,本接口服务端会效验用户身份,验证没通过的不能获取 数据
请适量适时使用该功能,因为本API使用时会连接网络(如果之前调用过相同参数的该API,此时会直接从缓存中读取,而不是连接网络重新获取。如果你想不论有没有缓存都直接从网络获取的 话,请先调用IPC_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、简单返回静态数据,不带参数

		客户端调用:

			返回值=IPC_advapi("v_自定义函数名")

      

		

function v_自定义函数名(){

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

}

 
B、高级应用,提交参数给服务端【自定义函数】运算后返回值 客户端调用: 返回值1=IPC_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=IPC_advapi("v_myfunaaa") 变量B=IPC_advapi("v_myfunbbb,100,200") 正常情况下变量A和B的值此时应该是如下 变量A="我的数据123123" 变量B="700" 注:服务端变量代入的算式是 100*5+200

 

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

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


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


 

相对应服务端代码


function v_isok(){

return '正常';

}
 


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

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

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


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

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


相对应服务端代码
 


function v_getd1(){

return '2F3';

}

function v_getd2(){

return '456';

}
 

 Copyright 2014-2015 玲珑工作室www.peony.ga 图图验证系统
 联系作者:QQ281278475    蒙ICP备15001097号