Quantcast
Channel: Essence Sharing | 干货分享 - iOSRE
Viewing all articles
Browse latest Browse all 301

MachO文件的符号混淆

$
0
0

@Cocoa wrote:

原文转载

见好像没人写MachO程序函数符号混淆的内容,但蛮实用的,那由我来介绍下<

函数符号,无论是内部函数,还是外部引用的函数都定义在LC_SYMTAB

symoff是函数符号表的文件偏移位置,这个符号表由nlist/nlist_64结构体组成,定义在mach-o/nlist.h,nsyms是数量

stroff是字符串表的文件偏移位置,strsize是大小

n_un.n_strx 是这条符号的字符串,值是文件偏移相对于字符串表
n_type 决定了这个符号的用处,对于反编译工具来说,比如修改n_type,可以使一个私有函数变成可以用dlsym引用的函数(小t>大T)
n_sect 表示这条符号关联的section
n_desc 在定义的文件中#include ,注释看起来和符号类型有关.但符号类型实际是和type有关,暂时不太清楚,函数的符号这个值通常为0,名字叫describe(描述),所以应该是一种可有可无的东西吧
n_value 对函数符号来说,这个就是和这个符号关联的值的函数的VM位置

n_type为0xf的时候是一般的函数符号,通常就是T,作为动态库,就是外部是可以引用的符号,但也可能是变量,区分这个看n_sect,函数符号的n_sect一般为0x1,_text,为0xe或者0x1e是内部符号,通常都是小写的,比如t,这个其他的就靠大家自己去摸索了

这些都可以随便改,不会影响程序运行

代码在此:
https://github.com/CocoaHuke/Check_and_Modify_machO_symbol

Posts: 7

Participants: 3

Read full topic


Viewing all articles
Browse latest Browse all 301

Trending Articles