美文网首页
2018-09-07 mac 测试两个 so 的同名全局函数

2018-09-07 mac 测试两个 so 的同名全局函数

作者: 自由快挂 | 来源:发表于2018-09-07 01:00 被阅读16次

1. 代码

~/repos/so [master] $ cat t.c
#include <stdio.h>

extern void say();

int main()
{
    say();
    return 0;
}
~/repos/so [master] $ cat t1.c
#include <stdio.h>

void say() {
    printf("t1\n");
}
~/repos/so [master] $ cat t2.c
#include <stdio.h>

void say() {
    printf("t2\n");
}

2. 生成动态库

gcc t1.c -shared -fPIC -o libt1.so
gcc t2.c -shared -fPIC -o libt2.so

3. 测试

~/repos/so [master] $ gcc t.c -L. -lt1 -lt2
~/repos/so [master] $ ./a.out
t1
~/repos/so [master] $ gcc t.c -L. -lt2 -lt1
~/repos/so [master] $ ./a.out
t2

结论

先链接谁,就是用谁!不知道 android 上加载 so 的策略是不是这样的。如果是的话,做一个

unsigned char *xxtea_decrypt(unsigned char *data, xxtea_long data_len, unsigned char *key, xxtea_long key_len, xxtea_long *ret_length)

原型的动态库,先于 libcocos2dlua.so 加载,就可以打印 key 了。

END

Android动态库的加载与Linux一致使用dlopen系列函数,通过动态库的句柄和函数名称来调用动态库的函数

需要更新测试程序,使用 dlopen,不过从原理上看,都不行了。

相关文章

  • 2018-09-07 mac 测试两个 so 的同名全局函数

    1. 代码 2. 生成动态库 3. 测试 结论 先链接谁,就是用谁!不知道 android 上加载 so 的策略是...

  • 2017.9.25

    全局变量:在函数内部定义的变量。 局部变量:在函数外面而不属于任何函数的变量。 如果定义了与全局变量同名的局...

  • Javascript学习笔记——3.10 变量作用域

    作用域(scope)类型 全局变量,在函数外定义的变量 局部变量,函数体内定义的变量,还有函数参数 同名处理 函数...

  • vue公共组件示例

    编写测试代码:/**接下来是定义全局函数*因为全局函数是要给外部使用的,所以需要将函数用export告知外部即可*...

  • 实现一个 jQuery 的 API

    HTML 如下: 首先封装两个函数 命名空间 给这两个函数分别命名,避免出现同名函数互相覆盖的情况 虽然避免了同名...

  • python函数中局部变量与全局变量遵守规则

    (1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值...

  • 忘掉了没关系!2021再来复习一遍JavaScript原型链吧

    1.原型的概念 先提出一个问题:将函数定义在全局作用域,会污染全局作用域的命名空间(接下来起了个同名函数就会覆盖)...

  • 全局变量和局部变量

    局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名...

  • 2018-9-27 招银信用卡测试岗面经

    招银信用卡测试岗 main主函数运行之前先会干什么 全局对象的构造函数会在main 函数之前执行,全局对象的析构函...

  • 变量作用域

    局部作用域函数参数是局部变量函数题内声明的变量是局部变量局部变量优先级高于同名的全局变量声明一个全局变量实际上是定...

网友评论

      本文标题:2018-09-07 mac 测试两个 so 的同名全局函数

      本文链接:https://www.haomeiwen.com/subject/gkkqgftx.html