如何混合native函数办法在so库函数对应关系

Sina Visitor System360脱壳-native函数还原笔记- - 『移动安全区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 21684|回复: 88
360脱壳-native函数还原笔记-
阅读权限20
本帖最后由 欧阳锋锋 于
12:37 编辑
& && &接触andorid逆向一段时间了,刚刚感觉开始入门,最开始时的过反调试,花费了大量的时间,但时间长了,汇编指令慢慢熟悉,学会了一些调
试技巧,反调试方法知道了,就那么些反调试的方法,过反调就比较顺利了,所以刚开始学逆向的同学,应该也会比较头疼的,记录下我的逆向学习之
旅,增强下记忆,记录分享也是自我提升的过程吧。轻松过掉反调试后,就能有更多的时间去研究壳本身流程和加解密操作。先前的dex加壳,不管是
内存加载(内存dump),还是类抽取(dexHunter),从内存中dump出来后,还是比较容易重打包运行的,自从出现能解释执行smali指令的壳出现后
,小伙伴都能把dex dump出来可是onCreate函数是native的,无法还原指令,dex的关键代码可以分析了,但是无法进行重打包运行,这tn就蛋疼了,
没有卵用,这些天也是一有空就看,还有点成果,手里的两个apk,只是把启动相关Activity 的onCreate进行了还原,apk能运行起来,记录分享下我
其实也没思路了,就是跟踪汇编,看汇编指令,函数比较复杂,而且加了混淆,刚开始头都大了。
& && &1.apk 过反调试,360的反调试方法还是那么些,没有更新,可以看我前一篇文章。
& && &2.找到正确的地方下断点,因为dump出dex的onCreate函数是native的,所以肯定是需要注册的,在so中找到给其赋值RegisterNative函数,相应的参
数就是对应的jni函数,动态调试起来,下断点,迷糊的小伙伴可以翻看我前一篇文章,最后有介绍。
& && &3.跟踪jni函数,关键在sub_A990函数,而且函数挺长的,需要点耐心阅读
1.png (18.06 KB, 下载次数: 12)
17:20 上传
& && &4.根据方法的索引获取方法的结构体,大致结构体如下:
& && && && &Struct NativeMethod{
& && && && && && &int classI
& && && && && && &int dexMethodI
& && && && && && &int dexCodeO
& && && && && && &int** pDexA
& && && &&&}*pNativeM
2.png (74.33 KB, 下载次数: 12)
21:37 上传
& && &5.根据结构体获取方法的相关信息
7.png (28.38 KB, 下载次数: 11)
21:49 上传
& && &6.根据方法的shorty,构建参数
8.png (55.79 KB, 下载次数: 13)
21:51 上传
& && &7.解析指令
9.png (66.6 KB, 下载次数: 13)
21:54 上传
& && &8.解密指令,获取opCode
c.png (16.43 KB, 下载次数: 12)
11:25 上传
& && &9.根据opcode进行相应的case处理,比如说一条invoke指令,就会通过,FindClass,GetMethod,CallXXXMethodA方法进行翻译&&& && && &
d.png (16.96 KB, 下载次数: 12)
12:36 上传
& && &10.大体的流程就是这样的,每个case的流程,就不写了,因为没看,不会,只是看了用到的部分,以下是某个apk 简单onCreate的还原
xx.png (50.87 KB, 下载次数: 11)
12:10 上传
& && & 360的opcode对应表不是固定的,分析了两个apk,表的对应关系是不一样的,应该是在加固过程中,动态生成的,指令加密方式也是
不一样的,尽管只是简单的异或,所以就没办法进行批处理了,只能手动分析,分析出这个apk对应的opcode表,再进行批处理操作了,反
正脱壳是越来越麻烦了,需要耐心去分析,分析用到的apk就不往论坛传了,放出去不太好,有需要的可以私我。
吾爱币 +29
热心值 +28
我很赞同!
谢谢@Thanks!
欢迎分析讨论交流,吾爱破解论坛有你更精彩!
鼓励转贴优秀软件安全工具和文档!
我很赞同!
谢谢@Thanks!
我很赞同!
我很赞同!
热心回复!
热心回复!
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
欢迎分析讨论交流,吾爱破解论坛有你更精彩!
我很赞同!
热心回复!
感谢发布原创作品,吾爱破解论坛因你更精彩!
用心讨论,共获提升!
热心回复!
我很赞同!
鼓励转贴优秀软件安全工具和文档!
懂汇编就是好
欢迎分析讨论交流,吾爱破解论坛有你更精彩!
谢谢@Thanks!
来支持下,呵呵,虽然不懂~~~
热心回复!
用心讨论,共获提升!
欢迎分析讨论交流,吾爱破解论坛有你更精彩!
我很赞同!
我很赞同!
本帖被以下淘专辑推荐:
& |主题: 1012, 订阅: 536
& |主题: 300, 订阅: 48
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
您好,请问是否有解开libjiagu.so? 虽然是别的方法破解了360,但想学习了是怎么做的,问题如下:
1.;壳工程的attachBaseContext方法中,调用了libjiagu.so中的interface5(runApp)方法,但是通过IDA打开时,并未找到interface5(runApp)方法。
2.通过classLoader加载了“com.qihoo360.crypt.entryRunApplication”,但是com.qihoo360.crypt.entryRunApplication类在哪里呢?我怎么在libjiagu.so中找到?
盼您回复。谢谢
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
1.这是动态注册的函数,需要找到注册的地方,才到找到对应的函数地址
2.如果这个类不在代{过}{滤}理壳里 ...
1.知道了动态注册的方法了。看了例了,也实现动态注册。
2。在解开的dex文件与源的dex文件都找了,都没有找到文件。
3。libjiagu.so里面,为什么JNI_ONLoad不是函数,而是在exports里面呢?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
需要什么版本的IDA分析啊
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
有兴趣的话可以研究研究百度加固
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
隔行如隔山,Android的指令跟x86 差很远哦……
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.社会化媒体
了解更多>>
桂ICP备 号
阅读下一篇
自媒体运营攻略
行业经验交流
Hi,在你登录以后,就可以永久免费的收藏任何您感兴趣的内容,关注感兴趣的作者!
手机注册或邮箱注册
点击按钮进行验证
请输入正确的邮箱
已有帐号请点击
帐号创建成功!
我们刚刚给你发送了一封验证邮件
请在48小时内查收邮件,并按照提示验证邮箱
感谢你对微口网的信任与支持
你输入的邮箱还未注册
还没有帐号请点击
点击按钮进行验证
你输入的邮箱还未注册
又想起来了?
你已成功重置密码,请妥善保管,以后使用新密码登录
邮件发送成功!
我们刚刚给你发送了一封邮件
请在5分钟内查收邮件,并按照提示重置密码
感谢你对微口网的信任与支持
对不起,你的帐号尚未验证
如果你没有收到邮件,请留意垃圾箱 或
意见与建议
请留下您的联系方式
* 留下您正确的联系方式,以便工作人员尽快与你取得联系
转藏至我的藏点假设编写了一个.c文件, gcc -c hello.c -o hello.o,得到.o文件 ar -r libhello.a hello.o 即可得到静态库 gcc -shared hello.o -o hello.so 即可得到共享库 静态库的链接:gcc target.c hello.a -o target 共享库的链接:gcc target.c hello.so -o target
1.什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的本质不同,因此二者库的二进制是不兼容的. 本文仅限于介绍linux下的库 2.库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大. 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积
一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同(主要是编译器.汇编器和连接器的不同),因此二者库的二进制是不兼容的. 本文仅限于介绍linux下的库. 1.2库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大. 共享库的代码是在可执行程序
本文讲解linux库文件路径中添加自己的路径.添加方法也极其简单,将库文件的绝对路径直接写进去,第二种搜索路径的设置方式对于程序连接时的库. linux操作系统中,linux库文件路径还是比较常用的,于是我研究了一下linux库文件路径,在这里拿出来和大家分享一下,希望对大家有用. 库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库
当你编程的时候,复制和粘贴-将你现有的代码进行再利用,这是不必再重复编码的最佳做法.这是一个技术债务的最佳例子:偷懒,草率和目光短浅,这会让维护代码的长期成本增加. 但它同时也很自然,找一些已经在运行的代码,跟你所需要的非常像,复制,粘贴,并用它作为起点.几乎每个人都这么干过.因为有些时候,复制过来的代码不仅仅是方便,而且就算我们所需要的. 首先要清楚我讲得复制粘贴的意思.不是说从互联网上复制代码,我指的是程序员重用代码的捷径–当他们遇到的问题与他们之前在另外一个系统中遇到的问题类似的时候,他们
Web技术的优势早已被广大应用开发者熟知,比如可与云服务轻松集成,基于响应式UI设计的精美布局,高度的开放性,跨平台能力, 高效的分发与部署等等.伴随着移动互联网的快速发展与HTML5技术的逐步成熟,Web应用已经成为移动端跨平台应用开发的热门解决方案.然而要在移动端充分利用Web技术的优势,仍然有许多障碍. Crosswalk作为一款开源的web引擎,正是为了跨越这些障碍而生.目前Crosswalk正式支持的移动操作系统包括Android和Tizen,在Android 4.0及以上的系统中使用
现在已经有不少配置不是很高的电脑用户正式用上了Windows 7(以下简称Win 7),如何让低配置电脑可以更流畅的运行Win 7呢?虽然部分软件提供了傻瓜化的优化处理方法,但这些优化往往让用户摸不到头脑,更不知道是否真实有效.本文教大家手动优化Win 7,而对象则是最容易被忽视的系统服务. 我们首先了解系统服务的一些相关知识,然后再根据Windows 7用户的各种不同需求提供有针对性Windows7系统服务清理方案,提高WIndows7的运行速度. 系统服务优化准备知识 什么是服务? 服务是系
首先简要阐述关于gcc.glibc和 binutils模块之间的关系 一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collect compiler)是一组编译工具的总称.它主要完成的工作任务是&预处理&和&编译&,以及提供了与编译器紧密相关的运行库的支持,如 libgcc_s.so.libstdc++.so等. 2.binutils提供了一系列用来创建.管理和维护二进制目标文件的工具程序,如汇编(as).连接(ld).静态库归档(
需求管理对研发而言的重要性这里就不多讲了,这里直接给大家探讨一下如何进行需求管理.对需求进行管理,有很多解决方法,最简单的是通过excel进行管理,更好的是采用需求管理系统,或者研发管理系统中包含需求管理模块.如IBM就有专门 针对需求管理的独立系统(Rational RequisitePro). 市面上的研发管理系统大都包含需求管理功能,只是在具体实现功能上有所差异.这里给大家简单介绍一下杭州云图科技公司的TOPO研发管理系统在需求管理方面的功能. 一:我们首先来看看如何创建需求树. 1:需求
SVN权限配置 作为一个配置管理员,需要管理用户的权限,本文主要介绍了使用Subversion的授权文件&authz-db&,同时为了叙述的清晰,我首先澄清一些概念. 1. 认证(Authentication)和授权(Authorization) 这两个术语经常一起出现.其中认证的意思就是鉴别用户的身份,最常见的方式就是使用用户名和密码,授权就是判断用户是否具备某种操作的权限,在Subversion里提供了&authz-db&文件,实现了以路径为基础的授权,也就是判
--========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --========================================== /* 对于初接触Oracle 数据库的人来讲,很容易混淆的两个概念即是Oracle 实例和Oracle 数据库.这两 概念不同于SQL sever下的实例与数据库,当然也有些相似之处.只是在SQL server我们根本不需要花费太 多的精力去搞清SQL实
简介: AndroidNDK是能使Android应用开发者把从c/c++编译而来的本地代码嵌入到应用包中的一系列工具的组合. 注意: AndroidNDK只能用于Android1.5及以上版本中. I. Android NDK 目标: Android虚拟机允许你的应用在源码中通过JNI调用本地代码中实现的方法们.概括起来,这表示: -你的应用的源中要声明一个或多个方法,这些方法前面需有'native'关键字,这表明它们被本地代码实现.如: nativebyte[] loadFile(String
This release of the NDK includes many new APIs, most of which are introduced to support the development of games and similar applications that make extensive use of native code. Using the APIs, developers have direct native access to events, audio, g
OBJ文件格式分析工具: objdump, nm,ar 首先简要阐述关于gcc.glibc和 binutils模块之间的关系 一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collect compiler)是一组编译工具的总称.它主要完成的工作任务是&预处理&和&编译&,以及提供了与编译器紧密相关的运行库的支持,如 libgcc_s.so.libstdc++.so等. 2.binutils提供了一系列用来创建.管理和维护二进制目标文
一.规则的显示 选择先来说明规则的显示,因为他涉及到的东东简单,而且又全面,了解了规则的显示,对于其它操作的了解就显得容易了. iptables version 1.2.7 iptables有两条线:ipv4 和ipv6,这里只分析v4的,因为v6偶暂时还用不着,没有去看. iptables_standardone.c 主函数: int main(int argc, char *argv[]) { char *table = &filter&; /*默认的表是filt
Android 开发手记一 ---- NDK 编程实例 在 Android 上,应用程序的开发,大部分基于 Java 语言来实现.要使用 c 或是 c++ 的程序或库,就需要使用 NDK来实现. NDK 是 Native Development Kit 的简称.它是一个工具集,集成了 Android 的交叉编译环境,并提供了一套比较方便的 Makefile ,可以帮助开发者快速开发 C 或是 C++ 的动态库,并自动的将 so 和 java 程序打包成 apk ,在Android 上运行. 好,
关于 NDK 的使用,首先需要了解一个概念: JNI .什么是 JNI ? 2.1 Hello-jni 这个是 NDK 自带的例子程序,安装官方网站的说明,一步步来,应该没有什么问题,这里就不细说了. 2.2 My God I did it 学习的第一步,就是模仿.我们依照上面 Hello-jni 的例子,在创建自己的 NDK 程序.在此过程中,对相关的内容和概念进行分析和说明. 首先,在工程的 src 夹子下用来放置 Java 文件.我们打开 Eclipse ,然后新建一个 Android 工
一.SGA--共享池 共享池是oracle缓存程序数据的地方.执行过的每一条sql语句在共享池中都存有解析后的内容.这个部分称作库高速缓存.在oracle解析每条sql之前,先检查库高速缓存,如果存在,就使用该信息.库高速缓存共享所有用户的所有sql. 共享池还包括oracle的系统参数,这一块被称为数据字典高速缓存. 二.库高速缓存 如下三条sql语句尽管返回的结果一样,但是在oracle中对应的hash_value值却不一样,oracle在执行sql语句时,会先把sql语句的字符串转换为哈希
一.编译和连接 一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径.由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的 不同,造成了用 -I 参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一.如果使用 -L 参数,也会造成连接界面的不统一.编译和连接界面不统一会为库的使用带来麻烦. 为了解决编译和连接界面不统一的问题,人们找到了一些解决办法
http://blogold.chinaunix.net/u3/99423/showart_2206760.html Android.mk文件语法规范及使用模板 Android.mk文件语法规范 根据eoeandroid上的的连载,进行一些更新.修改和加亮. 今天翻译ANDROID-MK.TXT文件(英文原文件在/development/Ndk/Docs/android-mk.txt) Android.mk文件语法规范 Introduction: Android.mk编译文件是用来向Androi
最近由于项目的需要,使用到了Android的NDK技术,对项目核心算法跨平台的移植.简答而言,就是使用C对原来的算法进行了改进,并集成到原来的app项目里. 从前的项目一直没有使用NDK进行开发的机会,因而一直仰慕那些技术大牛们关于NDK以及C/C++开发而写的文章,觉得很深奥,因而一直蠢蠢欲动. 其实NDK的开发并不复杂,就入门而言甚至可以说是easy job,觉得它难是难于C/C++代码的编写与调试.这个是我最近从事NDK开发的一点感受! 首先,我们要弄懂几个概念,何为NDK,它和SDK以及
.o..a..so文件都是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据. 优点:程序模块化,容易重新编译,方便升级. 分类:静态函数库(对应.a文件).共享函数库(对应.so文件,类似于Windows的dll文件).动态加载函数库(对应.o文件,相当于Windows里的.obj文件) 静态函数库 特点:实际上是简单的普通目标文件的集合,在程序执行前就加入到目标程序中. 优点:可以用以前某些程序兼容:描述简单:允许程序员把程序link起来而不用重新编译代码,节省了重新编译代码
库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序) 时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用.对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中.设置库文件的搜索路径有下列两种方式,可任选其一使用: 在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径. 在 /etc/ld.so.conf 文件中添加库的搜
动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库.大多数操作系统将解析外部引用(比如库)作为加载过程的一部分.在这些系统上,可执行文件包含一个叫做import directory的表,该表的每一项包含一个库的名字.根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序.可执行程序根据更新后的库信息调用库中的函数或引用库中的数据.这种类型的动态加载成为装载时加载 ,被包括Windows和Linux的大多数
Android 的加载/链接器linker 主要用于实现共享库的加载与链接.它支持应用程序对库函数的隐式和显式调用.对于隐式调用,应用程序的编译与静态库大致相同,只是在静态链接的时候通过--dynamic-linker /system/bin/linker 指定动态链接器,(该信息将被存放在ELF文件的.interp节中,内核执行目标映像文件前将通过该信息加载并运行相应的解释器程序linker.)并链接相应的共享库.与ld.so不同的是,Linker目前没有提供Lazy Binding机制,所有
一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collect compiler)是一组编译工具的总称.它主要完成的工作任务是&预处理&和&编译&,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so.libstdc++.so等. 2.binutils提供了一系列用来创建.管理和维护二进制目标文件的工具程序,如汇编(as).连接(ld).静态库归档(ar).反汇编(objdump).elf结构分析工具(readelf).
代码地址:http://download.csdn.net/detail/tqzxxx/6322855 应用程序中使用插件技术,有利于日后的版本更新.维护(比如打补丁)和功能扩展,是一种很实用的技术.其最大的特点是更新插件时无需重新编译主程序,对于一个设计良好的应用系统而言,甚至可以做到业务功能的在线升级.本文介绍了linux下用C++实现插件的一个简单实例,希望能对大家有所启发. 为了能做到更新插件时无需重新编译主程序,要求主程序中定义的接口是定死的,而接口的实现被放到了具体的插件中,这样主程
转 http://www.mike.org.cn/articles/linux-about-gcc-glibc-and-binutils-the-relationship-between-modules/ 一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collect compiler)是一组编译工具的总称.它主要完成的工作任务是&预处理&和&编译&,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so.libstdc+
为你的应用程序选择一个好的框架是一个很重要的决定,当然你所选择的框架它有它的弊益. HubSpot应用程序是一个全功能的应用程序.它是一个分析的应用程序,社交媒体程序,电子邮件和联系人管理应用程序 (将会有更多的惊喜)共存在一个屋檐下.当去年夏天我们开始着手建立这个相当复杂的应用程序,在建立之初我们觉得我们需要有一个好的框架去架构这个程序. 最后我们决定将每个子应用创建为一个独立的应用程序,然后使用CocoaPods把它们集成到主应用程序中. 在下面的截图,你可以看到每个应用程序其实都是子应用程
你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中.然后,告诉你的同事说,你可以取下来用了.这时,你长长的出了一口气,几天的工作没有白费,多么清新的空气啊,你开始飘飘然了. &Hi,怎么编译不过去?&你还沉浸在那种美妙的感觉之中,双臂充满着力量,似乎没有什么问题能难倒你的.正在此时,那个笨蛋已经冲着你嚷开了. &不会吧,我这边好好的!&表面上你说得很客气,其实,你心里已经骂开了,真笨,不知道
Android.mk文件语法规范及使用模板 Android.mk文件语法规范 根据eoeandroid上的的连载,进行一些更新.修改和加亮. 今天翻译ANDROID-MK.TXT文件(英文原文件在/development/Ndk/Docs/android-mk.txt) Android.mk文件语法规范 Introduction: Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的, 这篇文档描述了它的语法.在阅读下面的内容之前,假定你已经阅读了docs/O
HailDB 网站 : http://www.haildb.com/ HailDB 是一个用来嵌入 InnoDB 数据存储引擎的开发共享库,提供非常棒.高质量和可靠的 InnoDB 数据库引擎的集成.你可以用它来开发数据库. 授权协议: GPLv2 开发语言: C/C++ 操作系统: Linux BSD UNIX OS X
这篇文章主要介绍了在linux中使用gcc编译c语言共享库的步骤,大家参考使用吧 对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例如一个数据库服务器的接口,就像MySQL. 大部分大型的软件项目都会包含若干组件,其中一些你发现可以用在其他项目中,又或者你仅仅出于组织目的将不同组件分离出来.当你有一套可复用的并且逻辑清晰的函数时,将其构建为一个库会十分有用,这样你就不将这些源代码拷贝到你
这篇文章主要介绍了Python调用C语言开发的共享库方法实例,本文同时给出了C语言和Python调用简单实例,需要的朋友可以参考下 在helloworld工程中,编写了一个简单的两个数值相加的程序,编译成为共享库后,如何使用python对其进行调用呢? 使用ll命令列出当前目录下的共享库,其中共享库名为libhelloworld.so.0.0.0 ufo@ufo:~/helloworld/.libs$ ll 总用量 32 drwxr-xr-x 2 ufo ufo 4096 1月 29 14:54
我们可以用 top 或者 系统管理器 这样的工具来查看各个进程的内存占用,不过内存中不光有你运行的进程,还驻留着进程需要的共享库,比如最基本的 libc.so.这些共享库在物理内存上只存在一份拷贝,而被多个进程共享.我们在 top 中查看进程信息的时候,会有 RSS 和 VSZ 两个项目,前者是进程本身的内存占用,而后者是算上共享库的总占用. Memstat 这个小程序可以帮你查看每个共享库的内存占用,让他们现形. 直接运行 memstat -w 即可列出当前所有共享库的信息: memstat
对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧. 一.GNU gcc的编译工具用法 我们先来写一个简单的C程序:hello.c C代码 #include &stdio.h& void print_hello() { printf(&Hello World &); } int main(int argc, char argv[]) { print_hello
阅读: 171 评论: 0 作者: allanyan 发表于
15:13 原文链接 演示如何在AIX平台下使用共享库 OS:AIX Version 5.2 (64bit) 文件关系 mytest.cpp用于生成mytest*,它将调用共享库mytestso.so,mytestso.cpp用于生成mytestso.so* 源文件如下: 1// FileName: mytestso.cpp 2 3#include stdio.h& 4#include stdlib.h& 5
Linux 运行的时候,是如何管理共享库(*.so)的?在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的. ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序用到的共享库. 但是,如果需要用到的共享库在非标准路经,ld.so 怎么找到它呢? 目前,Linux 通用的做法是将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生成 /etc/ld.so.cache. ld.so 加载共享库的时候,会从 ld.so.cache 查
共享库注射--injectso实例 创建时间: 文章属性:转载 文章来源: http://www.whitecell.org/forums/viewtopic.php?topic=3885&forum=16&0 文章提交: xundi (xundi_at_xfocus.org) 共享库注射--injectso实例 Grip2 Joined: Feb 17, 2002 Posts: 139 Posted:
10:55 ----------------
LINUX共享库 类似Windows系统中的动态链接库,Linux中也有相应的共享库用以支持代码的复用.Windows中为*.dll,而Linux中为*.so.下 面详细介绍如何创建.使用Linux的共享库. 一个例子: #include&stdio.h& int sayhello( void ) { printf(&hello form sayhello function!/n&); return 0; } void saysomething(char * str) {
共享库的链接问题:奇怪的现象 在linux中进行共享库的链接时最常使用两个选项:-L选项指定库的查找目录,-l选项指定将要使用的共享库.除了使用这种标准方式进行库的链接外,还有一种方式:将共享库文件当成目标文件直接进行链接.就个人理解,这两种方式的效果应该是一样的,但是实际开发中却遇到了不一致的奇怪现象,有待大家帮忙解答,以下列出现象. 例子使用UDT库进行链接,UDT是用C++语言写的一个网络通讯库.使用第一种方式的链接选项和结果如下: # Makefile中的LIBS选项 LIBS = -L
DuiLib 网站 : http://code.google.com/p/duilib/ 国内首个开源 的directui 界面库,开放,共享,惠众,共赢,遵循bsd协议,可以免费用于商业项目,目前支持Windows 32 .Window CE.Mobile等平台. Duilib 是一款强大的界面开发工具,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率.提供所见即所得的开发工具UIDesigner.使用DirectUI后将使得我们的设计人员彻底解 放,不会受到开发的束缚,可以充分
libuv 网站 : https://github.com/libuv/libuv libuv 是 Node 的新跨平台抽象层,用于抽象 Windows 的 IOCP 及 Unix 的 libev.作者打算在这个库的包含所有平台的差异性. 特性: 非阻塞 TCP 套接字 非阻塞命名管道 UDP 定时器 子进程生成 通过 uv_getaddrinfo 实现异步 DNS 异步文件系统 API:uv_fs_* 高分辨率时间:uv_hrtime 正在运行程序路径查找:uv_exepath 线程池调度:u
这篇文章主要介绍了linux生成(加载)动态库静态库示例方法,大家参考使用 动态库的生成: 1./*mysum.c*/ #include &stdio.h& #include &src.h& int sum(int a,int b) { return (a+b); } 2./*mysum.h*/ 复制代码 代码如下: #ifndef __SRC_H__ #define __SRC_H__ int sum(int a,int b); #endif 3./*main.c*/ 复
php的ming库用来生成flash!虽然模块是试验性质的, 不过比较有趣. 一张大大的表, 很有趣, 给人一种在8g的感觉. sapi/php4activescript.dll (php5activescript.dll) - ActiveScript engine, allowing you to embed PHP in your Windows applications. sapi/php4apache.dll (php5apache.dll) - Apache 1.3.x module
这篇文章主要介绍了Python标准库之多进程(multiprocessing包)介绍,本文讲解了进程池.共享资源.共享内存.Manager等内容,需要的朋友可以参考下 在初步了解Python多进程之后,我们可以继续探索multiprocessing包中更加高级的工具.这些工具可以让我们更加便利地实现多进程. 进程池 进程池 (Process Pool)可以创建多个进程.这些进程就像是随时待命的士兵,准备执行任务(程序).一个进程池中可以容纳多个待命的士兵. &三个进程的进程池& 比如下
Libjingle 网站 : https://developers.google.com/talk/libjingle/?hl=zh-CN Libjingle是一个方便实现P2P传输的开源库,由google公司开发,并与日发布第一个版本,可以粗略的看成是Jingle协议的C++实现库(peakflys注:只是和Jingle协议非常相似,并不完全兼容,区别以后介绍),Google Talk即是基于这个库开发的.通过libjingle我们可以建立一个直通的网络连接(无视中间的NA
这篇文章主要介绍了利用Fn.py库在Python中进行函数式编程,基于Scala中的类似风格,需要的朋友可以参考下 尽管Python事实上并不是一门纯函数式编程语言,但它本身是一门多范型语言,并给了你足够的自由利用函数式编程的便利.函数式风格有着各种理论与实际上的好处(你可以在Python的文档中找到这个列表): 形式上可证 模块性 组合性 易于调试及测试 虽然这份列表已经描述得够清楚了,但我还是很喜欢Michael O.Church在他的文章&函数式程序极少腐坏(Functional prog
其实就是通过bat通过ipc连接已经安装打印机的机器,安装打印机机器的需要先共享才可以 公司共享出打印机的电脑基本都是配置比较好的台式电脑充当.安装XP系统.固定IP地址,配置相应权限并且安装好打印机驱动,这里特别说明,所有电脑均没有开启来宾帐号,任何共享访问都是需要密码的,所以批处理是这样share_print.bat @echo off net use \\192.168.1.230\IPC$ &密码& /user:&用户名& rundll32 printui.
这篇文章主要介绍了使用mysql_udf与curl库完成http_post通信模块示例,需要的朋友可以参考下 使用mysql_udf与curl库完成http_post通信模块(mysql_udf,multi_curl,http,post) 这个模块其目前主要用于xoyo江湖的sns与kingsoft_xoyo自主研发的TCSQL数据库做数据同步,当有feed插入sns数据库,使用触 发器调用该模块,向tcsql数据库发送同步数据.也可以使用该模块与其它使用socket接口的数据库或程序做转发与同
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.058 (s). 11 q(s)

我要回帖

更多关于 native 函数库 的文章

 

随机推荐