返回列表 发新帖
楼主: JimmyJLNU - 

so文件究竟是干嘛的?!

[复制链接]

0

主题

88

回帖

374

积分

初中生

Rank: 3Rank: 3

金币
169
好评
0
信誉
100

考神MT论坛帅哥

发表于 2019-12-12 14:41:01 来自手机  | 显示全部楼层  来自 黑龙江
JimmyJLNU 发表于 2019-12-10 18:08
举个最简单的例子:现在我使用的这款浏览器只有507.69K,简单纯粹,令人耳目一新;经过本人实际拆解apk, ...

因为so是用于扩展功能的,一些情况下用c++的so库处理如图片等的效率要高于java,所以可以用so库来实现部分功能,这就是存在的意义
回复

使用道具 举报

0

主题

88

回帖

374

积分

初中生

Rank: 3Rank: 3

金币
169
好评
0
信誉
100

考神MT论坛帅哥

发表于 2019-12-12 14:41:48 来自手机  | 显示全部楼层  来自 黑龙江
JimmyJLNU 发表于 2019-12-10 17:53
apk没有so文件也可以正常运行啊。
为什么要有so文件呢?
有的软件有,有的软件就没有。

因为mt没有反汇编so的功能,所以当然改不了so,但是可以用16进制改,或者电脑上下载jeb3和ida pro
回复

使用道具 举报

0

主题

88

回帖

374

积分

初中生

Rank: 3Rank: 3

金币
169
好评
0
信誉
100

考神MT论坛帅哥

发表于 2019-12-12 14:42:10 来自手机  | 显示全部楼层  来自 黑龙江
JimmyJLNU 发表于 2019-12-10 17:51
dex才是可执行文件呢,so也是吗?如果是的话,为什么不能直接运行?
因为我很清楚,每次点开手机桌面的图 ...

so当然也是,都是可执行二进制文件
回复

使用道具 举报

0

主题

88

回帖

374

积分

初中生

Rank: 3Rank: 3

金币
169
好评
0
信誉
100

考神MT论坛帅哥

发表于 2019-12-12 14:42:53 来自手机  | 显示全部楼层  来自 黑龙江
JimmyJLNU 发表于 2019-12-10 17:51
dex才是可执行文件呢,so也是吗?如果是的话,为什么不能直接运行?
因为我很清楚,每次点开手机桌面的图 ...

你需要了解ndk和jni就知道为什么c是附着到java代码运行的了
回复

使用道具 举报

11

主题

254

回帖

856

积分

高中生

Rank: 4

金币
242
好评
0
信誉
100
发表于 2019-12-13 17:19:30 来自手机  | 显示全部楼层  来自 吉林
青ۣۖิۣ枫 发表于 2019-12-12 14:41
因为so是用于扩展功能的,一些情况下用c++的so库处理如图片等的效率要高于java,所以可以用so库来实现部 ...

辅助作用?
回复

使用道具 举报

155

主题

3102

回帖

8896

积分

硕士生

水神

Rank: 6Rank: 6

金币
87
好评
158
信誉
102

考神MT论坛最佳新人MT论坛活跃会员MT论坛灌水老大MT论坛帅哥

发表于 2019-12-13 18:03:25 来自手机  | 显示全部楼层  来自 江苏
so说白了就是一个工厂,你没必要知道他怎么工作的,也不用管他有没有清洗,反正你丢进去一条鱼,出来一个罐头就完了。
当然,如果有一天你希望丢一只鸡进去也出来一个罐头,那么就要把工厂拆开,看看原理,然后改一下。这就是反编译+破解so
回复

使用道具 举报

155

主题

3102

回帖

8896

积分

硕士生

水神

Rank: 6Rank: 6

金币
87
好评
158
信誉
102

考神MT论坛最佳新人MT论坛活跃会员MT论坛灌水老大MT论坛帅哥

发表于 2019-12-13 18:07:07 来自手机  | 显示全部楼层  来自 江苏
还用工厂的角度解释为啥会有这种东西出现。
如果你要制作一个罐头,两个罐头,专门建造一个工厂,就太麻烦了,手动压制的小机器就能满足,不需要(当然可以)建工厂。
但是如果你需要制作几十亿,几百亿个罐头,那么你要手动压制就太麻烦了。于是把流程精简,剥离出来,造了一个工厂。这样,只要是要求造罐头就能直接用这个工厂,是不是方便多了
回复

使用道具 举报

155

主题

3102

回帖

8896

积分

硕士生

水神

Rank: 6Rank: 6

金币
87
好评
158
信誉
102

考神MT论坛最佳新人MT论坛活跃会员MT论坛灌水老大MT论坛帅哥

发表于 2019-12-13 18:11:01 来自手机  | 显示全部楼层  来自 江苏
个人觉得其实和封装方法的概念,没啥太大区别。
原则上都是需要精简过程和代码量。
比如你要重复一大堆类似的事情,要是复制粘贴然后慢慢改,就太浪费资源了(包括时间,精力,内存)所以封装一下,这样本类里就能用了。
那其他类怎么用?导入包就行了。
那其他工程怎么用?
复制当然也行,那不如封装成do直接导包调用。
(小声逼逼这和windows的dll感觉差不多。更巧的是(当然这是必然)他们准确的说都是elf格式的)
回复

使用道具 举报

155

主题

3102

回帖

8896

积分

硕士生

水神

Rank: 6Rank: 6

金币
87
好评
158
信誉
102

考神MT论坛最佳新人MT论坛活跃会员MT论坛灌水老大MT论坛帅哥

发表于 2019-12-13 18:11:48 来自手机  | 显示全部楼层  来自 江苏
个人理解
有错误请斧正
回复

使用道具 举报

11

主题

254

回帖

856

积分

高中生

Rank: 4

金币
242
好评
0
信誉
100
发表于 2019-12-15 01:04:32 来自手机  | 显示全部楼层  来自 吉林

我知道dll是干嘛的

本帖最后由 JimmyJLNU 于 2019-12-15 01:20 编辑
涛之雨 发表于 2019-12-13 18:11
个人觉得其实和封装方法的概念,没啥太大区别。
原则上都是需要精简过程和代码量。
比如你要重复一大堆类似 ...


我知道dll是干嘛的,叫动态链接库,又被称做应用程序扩展,俗称系统/软件的模块/组件/插件,它们是软件(exe应用程序)的一部分,sys/ocx同理。由于应用程序的一部分功能需要单独维护,另外还要满足某些扩展功能,所以就把这一部分功能封装成一个dll,比如图像处理、视频解码等等。由于应用软件依赖dll,这些文件可以随时维护和更换,所以就可以把一些功能做成插件,甚至出现了专门针对某款软件的第三方插件。比如著名的QQ显IP插件NTRQQ就是一大堆dll,它们不能直接运行,必须打开QQ后,这些dll被QQ加载,才可以达到去除广告和显示IP的目的。另外很多的破解补丁也是要求先安装软件,然后再手动替换一个或多个dll文件,这就叫“偷梁换柱”,也就是所谓的“DLL劫持”。(比如破解版 Apowersoft 视频剪辑王
此外,Windows系统漏洞补丁基本上就是修补替换各种dll/sys文件,你可以在系统目录(C:\Windows)下的winsxs文件夹中看到大量的dll文件。
此外,我也知道安装某些软件需要有一些依赖环境,诸如VC++运行库,.Net Framework之类。其实它们也是一堆dll文件,一旦缺少,软件就会报错,无法正常运行。
回复

使用道具 举报

155

主题

3102

回帖

8896

积分

硕士生

水神

Rank: 6Rank: 6

金币
87
好评
158
信誉
102

考神MT论坛最佳新人MT论坛活跃会员MT论坛灌水老大MT论坛帅哥

发表于 2019-12-15 01:25:48 来自手机  | 显示全部楼层  来自 江苏
JimmyJLNU 发表于 2019-12-15 01:04
我知道dll是干嘛的,叫动态链接库,又被称做应用程序扩展,俗称系统/软件的模块/组件/插件,它们是软件( ...

那就简单多了啊。。
so就类似于dll。
是Linux平台的积木
回复

使用道具 举报

11

主题

254

回帖

856

积分

高中生

Rank: 4

金币
242
好评
0
信誉
100
发表于 2019-12-15 01:30:02 来自手机  | 显示全部楼层  来自 吉林
本帖最后由 JimmyJLNU 于 2019-12-15 01:32 编辑
涛之雨 发表于 2019-12-15 01:25
那就简单多了啊。。
so就类似于dll。
是Linux平台的积木


有点儿懂了。
还有一个问题:
为什么脱壳和去效验离不开so文件?
另外还有一个问题:
so文件存在的意义是什么?
同样的功能用Java就可以实现,为什么要用so文件呢?可以看我举的那个例子。
回复

使用道具 举报

155

主题

3102

回帖

8896

积分

硕士生

水神

Rank: 6Rank: 6

金币
87
好评
158
信誉
102

考神MT论坛最佳新人MT论坛活跃会员MT论坛灌水老大MT论坛帅哥

发表于 2019-12-15 01:32:55 来自手机  | 显示全部楼层  来自 江苏
JimmyJLNU 发表于 2019-12-15 01:30
有点儿懂了。
还有一个问题:
为什么脱壳和去效验总是离不开so文件?

因为dex里好改啊。。。不安全,类似于Delphi,VB,易语言或是py之类的,虽然可以封装但是容易反编译。emmm只是举个例子。dex理论上可以完全转jar然后完全转smali然后完全转class文件。。。
so是二进制可执行文件,类似于c写的软件,虽然可以反编译,也能够破解,但是毕竟麻烦了是不是
回复

使用道具 举报

155

主题

3102

回帖

8896

积分

硕士生

水神

Rank: 6Rank: 6

金币
87
好评
158
信誉
102

考神MT论坛最佳新人MT论坛活跃会员MT论坛灌水老大MT论坛帅哥

发表于 2019-12-15 01:36:29 来自手机  | 显示全部楼层  来自 江苏
JimmyJLNU 发表于 2019-12-15 01:30
有点儿懂了。
还有一个问题:
为什么脱壳和去效验离不开so文件?

特别是那个360的王八壳,用了虚拟化技术(vmp)就是自己写了一个解释器,直接翻译成机器码,不经过系统的解释器,这样几更难搞了(不排除能搞),最近期末比较忙,再之前有电脑就会去艹一波360王八壳现在找到平流的位置了,可是我不知道该如何找对应的机器码和加密后的代码相对应关系(术语叫opcode映射表)。。。找不到关系,就算是找到了地方也该不会去,这就是vmp的魅(恶)力(心)所在
回复

使用道具 举报

11

主题

254

回帖

856

积分

高中生

Rank: 4

金币
242
好评
0
信誉
100
发表于 2019-12-15 01:36:37 来自手机  | 显示全部楼层  来自 吉林
涛之雨 发表于 2019-12-15 01:25
那就简单多了啊。。
so就类似于dll。
是Linux平台的积木


电脑方面的东西我还是很懂的,毕竟积累了超过十年的经验,还通过了计算机二级考试(OFFICE 高级应用)。而且我还是“无产阶级”,会下载和使用破解软件那是必须的。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表