Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

pythonName/IOSDebug

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

msglogger

	github上有若干用于纪录objc_msgSend消息的仓库,然而均存在一定问题
	1.使用dyld_insertlibrary方式启动,不适用于ios app
	2.使用substrate框架是常理,然而在new_objc_msgSend回调中做了太多事情以致效率很低(这包括Snoop-it)
	3.将new_objc_msgSend回调实现在.m/.mm文件中,导致递归(因为编译器会生成局部变量构造析构代码,里面也调用的objc_msgSend)(这包括InspectiveC),而实现在c/cpp中则不会有递归问题
	4.未能解析objc_msgSend参数
	对于此问题,提供的解决方案:
	1.使用cydia substrate框架实现msgsend hook以及Cydia提供的MobileLoader自动加载dylib模块(注意ios设备上存在的substrate头文件是最全的)
	2.new_objc_msgSend回调做成异步任务式,检查selector的地址空间是否位于该模块,这样比匹配id和selector快得多
	3.在.c/.cpp中实现new_objc_msgSend回调
	4.从signature解析出参数类型(由于匹配要class+selector,开启该功能则不可避免的耗时)
	
	msglogger使用方式:
	./utilityserver --app_inject "com.?"
	/tmp/msglog.txt查看结果
	
	存在的问题:
	对于大的可执行文件由于msgSend相当频繁,因此不推荐hook msgSend方式,可以考虑使用frida或cycript hook某些selector

交流群560017652欢迎讨论

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 55.6%
  • C++ 25.1%
  • Objective-C 15.6%
  • Objective-C++ 3.7%

AltStyle によって変換されたページ (->オリジナル) /