前两天我协助解决了一个技术问题,在此稍作记录和总结。具体来说,就是在使用基于Webkit引擎的封装组件wke的过程中,需要把一个易语言函数注册给JavaScript引擎,让它可以在网页里被调用(就像在网页里调用普通JavaScript函数一样)。如果能做到这一点,就基本实现了从JavaScript传递参数到易语言、易语言返回值给JavaScript的双向沟通机制,以后有广泛的应用空间。最终,我借助动态生成代码技术,纯手工书写了几行X86机器指令,人肉编译形成一个fastcall调用约定的回调函数,传递给js...
分类:
编程语言 时间:
2015-03-04 06:17:21
阅读次数:
268
可变参数的方法是指具有 CallingConventions.VarArgs 调用约定的方法,可以根据需要传递任意个数的参数,参数的类型也可以互不相同。本文从 P/Invoke、C# 中可变参数方法的声明、IL 代码和 RuntimeArgumentHandle 四个方面介绍了 C# 中的可变参数方...
函数调用约定
常见的函数调用约定[5]:cdecl,stdcall,fastcall,thiscall,naked call
MFC调用约定(VS6:Project Settings->C/C++ Calling convention:)
1, __cdecl(C调用约定.The C default calling convention)C/C++ 缺省调用方式
...
分类:
编程语言 时间:
2015-02-09 12:56:00
阅读次数:
275
***********************************************************
首先,比较C++ 中的三种函数调用方式。
测试代码:
int _stdcall Add1(int x1, int x2, int x3)
{
return x1 + x2 + x3;
}
int __cdecl Add2(int x1, int x2...
分类:
编程语言 时间:
2015-02-09 12:54:41
阅读次数:
304
本文介绍使用汇编语言编写shellcode的技巧,如零数值,绝对地址以及Linux系统调用约定。最后成功编写一个本地shellcode。...
分类:
系统相关 时间:
2015-02-02 00:48:18
阅读次数:
281
调试64bit程序所面临的挑战
如果到目前为止,你还没有调试过优化后的64bit代码,为了不落后于时代,那就赶紧去尝试吧。由于64bit下fastcall调用方式和大量通用寄存器的存在,找出任意栈帧中局部变量的值将会变得非常棘手。
本文,我将详述一些我非常喜欢的调试64bit代码的技巧。但在此之前,我们先对64bit下函数的调用方式做一个了解。
X64调用约定
如果你熟悉32位平台下的fa...
分类:
其他好文 时间:
2015-01-31 20:40:15
阅读次数:
161
__stdcall 被这个关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall 的前面部分由ecx,edx传),函数调用在返回前要由被调用者清理堆栈。这个关键字主要见于Microsoft Visual C、C++。GNU的C、C++是另外一种修饰方式:__attribute_.....
分类:
其他好文 时间:
2015-01-26 14:55:48
阅读次数:
127
以下摘自《IDA Pro》,貌似有一些细节之处没有交代清楚呢,需要进一步思考、实践。 了解栈帧的基本概念后,接下来详细介绍它们的结构。下面的例子涉及x86体系结构和与常见的x86编译器(如Microsoft Visual C/C++或GNU的gcc/g++)有关的行为。创建栈帧的最重要的步骤是,通过...
分类:
其他好文 时间:
2015-01-25 23:56:05
阅读次数:
423
1.JNI(Java Native Interface): 它允许Java代码和其他语言写的代码进行交互,JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。下图是java与c的交互表现: 2.JNI的编写与编译流程: 1)编写...
分类:
其他好文 时间:
2015-01-25 00:00:11
阅读次数:
396
DLL中调用约定和名称修饰(一)调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理堆栈等问题。不同的语言定义了不同的调用约定。在C++中,为了允许操作符重载和函数重载,C++编译器...
分类:
其他好文 时间:
2015-01-05 21:49:56
阅读次数:
158