美文网首页
宏混淆和重新生成类混淆的区别

宏混淆和重新生成类混淆的区别

作者: coder_feng | 来源:发表于2019-09-26 16:35 被阅读0次

LinkMap诡探

Xcode中配置LinkMap

LinkMap文件是Xcode产生可执行文件(Mach-O)的同时生成的链接信息,用来描述可执行文件的构造成分,包括代码段(__TEXT)和数据段(__DATA)的分布情况。XCode -> Project -> Build Settings -> 搜map -> 把Write Link Map File选项设为yes,并指定好linkMap的存储位置,如下图

linkmap path to link map file

编译后,到编译目录里找到该txt文件,文件名和路径就是上述的Path to Link Map File位于~/Library/Developer/Xcode/DerivedData/XXX-eumsvrzbvgfofvbfsoqokmjprvuh/Build/Intermediates/XXX.build/Debug-iphoneos/XXX.build/xxx.txt

从文件中,我么可以看到这个LinkMap里展示这个可执行文件的全貌,分为三段,分别是:

Object files:列出所有.o目标文件的信息(包括静态链接库.a里的或者动态库framework的)

Sections:描述各个段在最后编译成的可执行文件中偏移位置的大小包括了代码段(__TEXT,保存程序代码段编译后的机器码)和数据段(__DATA,保存变量值),字段的含义在Mach-o中已详细介绍。

 Symbols:列出具体的按每个文件列出每个对应字段的位置和占用空间

Otool 分析二进制

otool -s __TEXT __stubs 二进制路径

通过这两操作,我们可以看到framework其实如果被打包进入到了.app之后,会发现其实是找不到那些宏定义之前的文件的啦,宏定义之后的文件,我们可以通过逆向工具等可以查看到,但是宏定义之前的文件是看不到的了,所以生成类的方式混淆和宏定义方式的混淆其实是一样的

参考链接

Mach-O可执行文件

otool相关命令

otool命令查看App动态库

相关文章

  • 宏混淆和重新生成类混淆的区别

    LinkMap诡探 Xcode中配置LinkMap LinkMap文件是Xcode产生可执行文件(Mach-O)的...

  • iOS 马甲包 代码混淆

    一、混淆代码五种脚本文件 脚本思路: 1.设置好读取和写入的路径,设置生成宏的方法名或者类名前缀,设置屏蔽文件夹。...

  • Android混淆

    开启混淆 Proguard关键字 keep 保留类和类中的成员,防止被混淆或移除 keepnames 保留类和类中...

  • [iOS]混淆-方法混淆

    Objective-C/Swift的方法名、属性名混淆 特点 混淆的时机是在编译前 混淆后,不影响源代码 混淆生成...

  • 手撕一个丧心病狂的Android混淆文件生成器

    直接上效果! 混淆前; 混淆后; image image 使用 获取混淆文件 自己生成规则 使用intellij ...

  • iOS 代码混淆

    使用STCObfuscator框架可以生成Md5加密的字符串,在debug环境下运行生成混淆宏,在release打...

  • iOS防护03-代码混淆

    一.简介 只混淆重要代码,要不然会被App Store拒绝. 代码混淆通过宏定义将类名、方法名、协议名替换1.不能...

  • 丧心病狂的Android混淆文件生成器

    效果 混淆前 混淆后 使用 获取混淆文件 自己生成规则 使用intellij idea 打开 proguard-c...

  • APK加固方式

    一:代码混淆 Proguard是一个代码优化和混淆工具。能够提供对Java类文件的压缩、优化、混淆,和预校验。压缩...

  • 最佳被虐——Android混淆文件生成器

    直接上效果! 混淆前; 混淆后; 使用 获取混淆文件 自己生成规则 使用intellij idea 打开 prog...

网友评论

      本文标题:宏混淆和重新生成类混淆的区别

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