应用安全里面有一个概念叫完整性,指的是程序或数据不能被攻击者恶意篡改。根据篡改时刻的不同,我们有两类方式来破坏应用的完整性:静态和动态。
在安卓上,静态的篡改方式是反编译apk,修改或添加代码后重打包,用户只要安装了这个修改过的apk,运行时攻击者的代码就会被加载到进程空间。
动态的篡改方法就是hook。如果我要篡改代码,那么我要实现的就是在程序将要执行某段逻辑的时候控制它去执行我的代码,这个行为就叫hook。
一个运行时的程序表现形式是进程,代码跟数据都放在自己的进程里面。那么问题来了, *** 作系统隔离了进程,我的代码在我的进程里,别人的代码在别人的进程里,别人的进程是不能跳到我的进程来执行我的代码的,这怎么办呢,所以要先想办法把代码注入到别人的进程里。之前提到的重打包也算是一种静态的注入方法,动态的注入方法在安卓上与Linux的共享库注入是类似的,这种方法网上用的最多的应该是看雪的古河发布的libinject。另外还有Xposed,它采取了一种特殊的注入方法,是动静结合的。
微软表示:我们的编译器并没有考虑生成的机器码还要能够让linux运行……开个玩笑,这个问题你得先了解编译原理,windows下的库有两种,一种是native code,这种就别想了,它之所以能够在windows上运行,当然是因为编译器把它们编译成了windows *** 作系统能够识别的机器码组织形式(严谨地来说,是链接器和加载器的不同,以及各自的系统调用压根就没有互映射性,导致了linux不能使用它们);第二种是.net平台编译出来的类库,这个是生成了中间语言(IL),跟java一样,原则上是跨平台的,不过很多年以来,它只是原则上而已,从来就没跨过。不过现在的好消息是,.net standard已经在包括linux之内的若干 *** 作系统上完成了实现,所以如果你在.net平台上编写一个完全符合.net standard库的dll的话,它是可以跑在linux上的(严格来说,是某些非常新的linux发行版),这就是大名鼎鼎的.net core,也是微软目前在软件开发方向上大力投入的开源社区项目。所以总的来说,微软还是充分考虑到你的这种应用需求的。如果你确实想完成把windows下的应用程序改到linux下面来运行,.net core是目前最好的选择(因为还有个叫Mono的哥们也在做同样的事儿,你同样可以参考)用交叉编译环境是可以的。如mingw。
建议在Windows下安装mingw,然后调试。直接调用是肯定不行的。
参考我的博客:http://jeremiah.blog.51cto.com/539865/183560
有个 mono你可以试试,或者是利用wine来读取,不过不管怎么样都不能直接读取,但是间接的是可以的。大概的就这两种方法,你可以去wine和mono的网站看看。
应该有不少这方面的资料的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)