求教一个关于逆向具体函数算法实现的可能性和方法

问题描述下:尝试分析一个iphone平台下的app,他应该是使用了第三方的一个sdk(.a文件,我可以免费下载到),这个sdk会组织一个签名信息后,发起http请求给外部接口,目前请求数据包可以收集到。
问:
但具体签名的算法,包括签名信息源串的组织方式不知道,希望了解

求大神们点解哈:
1、从理论上说能否实现哦(现在用到的ida等只能看到汇编语言,能逆向到代码级吗);
2、点拨一下大概的解决方法(思路-包括对整个app下手还是.a哈、用到工具等)

再次感谢。

1 个赞

1、理论上100%可以实现,.a是静态库文件,是MachO格式的,可以使用class-dump、IDA等工具分析。IDA反汇编当然只能看到汇编语言,但这是免费的,用IDA的demo版就可以达到目的;到C语言级需要用到hexray decompiler,也就是反编译,但这个插件的价格很贵。就我个人接触过的逆向工程师来说,大多数都是直接阅读汇编语言;
2、解决方法只能说个大概:i) 找到发起http请求的函数;ii) 动态调试,在此函数上下断点,查看其调用者;iii) 调用者里应该含有签名信息,找到目标;iv) 采用类似方法,查看调用者的调用者,的调用者,的调用者……直至跟踪到签名的生成过程,阅读汇编语言,还原算法

多谢大哥的指点,经过分析发现有不少使用到 objc_msgSend方法的地方,这个是系统级的吗。。,比如下面这个,貌似是取url编码方法的一部分
objc_msgSend(v4, “replaceOccurrencesOfString:withString:options:range:”, CFSTR("$"), CFSTR("%24"), 1, 0, v5);,如果都是这些,实际上具体实现部分还是对我是隐藏的哦(第二个参数貌似才是是最终要调用的方法。。),还有好多哈,类似v13 = objc_msgSend(v4, “isoCountryCode”),

关于这种函数的分析,书的第5,6章有详细的讲述和例子,你好好看看就明白了

好的。老大,我第六章还没开始看,哈哈,继续接近真相了。。。:titter: