准确、全面、易读、丰富的网络百科全书
你好!请登录

有谱百科
助您轻松探秘世界,学习知识。

登录
call

call

汇编代码、VB

call是一种注入外部EXE程序从外部调用函数的技术。通常指的是REMOTE CALL。是用于将程序的执行交给其他的代码段,通常是一个子例程,流程转移指令,它们都修改IP,或同时修改CS和IP。call指令实现转移的方法和jmp指令的原理相似同时保存必要的信息,从而使被调用段执行完毕后返回到调用点继续执行。

中文名

call

英文名

REMOTE CALL

简介

注入外部EXE程序从外部调用函数的技术

语法简介

call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。

参数

thisArg:n可选的。在 function 函数运行时使用的 this 值。请注意,this可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装。

arg1, arg2, ...n指定的参数列表。

返回值

使用调用者提供的 this 值和参数调用该函数的返回值。若该方法没有返回值,则返回 undefined。

描述

call() 允许为不同的对象分配和调用属于一个对象的函数/方法。

call() 提供新的 this 值给当前调用的函数/方法。你可以使用 call 来实现继承:写一个方法,然后让另外一个新的对象来继承它(而不是在新对象中再写一次这个方法)。

REMOTE

CALL通常指REMOTE CALL、游戏CALL,指一种注入外部EXE程序从外部调用函数的技术。

找CALL一般使用OD等工具,而CALL的使用一般需要编写复杂的汇编代码,在快手(AAuto Quicker) 中推出了一种通用CALL技术,可以象声明WIN API一样声明CALL.下面是一个简单的示例:

//外部CALL读取命令行

//列出所有已运行进程的命令行参数

import winex;

io.open()

//遍历所有窗口

for hwnd,title,theadId,processId in winex.each( ) {

if(title != "") //如果标题不为空

//在外部EXE进程创建函数

GetCommandLine = raw.remoteApi(processId,"string()","Kernel32.dll","GetCommandLineA")

str = GetCommandLine()

io.print(processId,title,str)

DOS命令

微软DOS命令集中的常用内部命令, 用于从批处理程序调用另一个批处理程序。

语法形式

CALL [drive:][path]filename [batch-parameters]

batch-parameters 指定批处理程序所需的命令行信息。

使用帮助

如果命令扩展被启用,CALL 会如下改变:

CALL 命令现在将卷标当作 CALL 的目标接受。语法是:

CALL:label arguments

一个新的批文件上下文由指定的参数所创建,控制在卷标被指定后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。

第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次会退出批脚本。键入 GOTO /?,参看GOTO:EOF扩展的描述,此描述允许您从一个批脚本返回。

VB关键字

用于将程序的执行交给其他的代码段,通常是一个子例程,同时保存必要的信息,从而使被调用段执行完毕后返回到调用点继续执行。

描述:将控制权传递给 Sub 过程或 Function 过程。

语法:【Call】 name 【argumentlist】

Call 语句语法有以下部分:

描述Call可选关键字。如果指定此关键字,则必须用括号把argumentlist括起来。

例如:Call MyProc(0)

name必选。要调用的过程名。

argumentlist 可选。传递给过程的变量、数组或表达式列表,用逗号分隔每一项。

说明:在调用过程时,不必使用 Call 关键字。然而,如果使用 Call 关键字调用要求参数的过程,则必须用括号将argumentli括起来。如果省略 Call 关键字,那么必须也同时省略 argumentlist 参数两边的括号。使用 Call 语法调用内部函数或使用用户自定义函数,函数返回值都会被放弃。 call 命令接受用作跳转目标的标签。如果在脚本或批处理文件外使用call,它将不会在命令行起作用。

参考资料

批处理命令——call 和 start·博客园

Function.prototype.call()·MDN Web Docs