在易语言里,我们可以采用到整数(&子程序)的方法获取的并非子程序的真实地址,易语言易语言在开发的时候对子程序有一层包装,我们可以采用strcpynA获取子程序的真实指针来获取子程序的真实地址,当然,更简单的就是采用汇编代码,易语言有一个很方便对汇编的调用,就是置入代码() 下面的这篇文章采用strcpynA获取子程序的真实指针,不妨了解一下:
http://www.511yj.com/eyuyan-api-strcpyna.html
汇编源码
00000000 PUSH EBX 00000001 PUSH ECX 00000002 MOV EAX,[EBP+8] 00000005 INC EAX 00000006 MOV ECX,[EAX] 00000008 CMP CL,E8 0000000B JNZ SHORT 00000005 0000000D MOV ECX,[EAX+1] 00000010 LEA EBX,[EAX+ECX+5] 00000014 MOV ECX,[EBX] 00000016 SHL ECX,8 00000019 CMP ECX,EC8B5500 0000001F LEA EAX,[EAX+4] 00000022 JNZ SHORT 00000005 00000024 MOV EAX,EBX 00000026 POP ECX 00000027 POP EBX 00000028 LEAVE 00000029 RETN 4
易语言源码
.版本 2 .子程序 ASM取子程序真实地址, 整数型, 公开, 易语言对子程序有一层包装,直接到整数是包装子程序地址 .参数 子程序指针, 子程序指针 置入代码 ({ 83, 81, 139, 69, 8, 64, 139, 8, 128, 249, 232, 117, 248, 139, 72, 1, 141, 92, 8, 5, 139, 11, 193, 225, 8, 129, 249, 0, 85, 139, 236, 141, 64, 4, 117, 225, 139, 195, 89, 91, 201, 194, 4, 0 }) 返回 (0)