当前位置: 首页 > news >正文

苏州网站建设系统哪家好品牌建设的规划与实施

苏州网站建设系统哪家好,品牌建设的规划与实施,山东省建设工会网站,优化网站建设人员组成今天我们将继续讲解逆向开发工程另一个重要内容--Hook原理讲解。Hook#xff0c;可以中文译为“挂钩”或者“钩子”#xff0c;逆向开发中改变程序运行的一种技术。按照如下过程进行讲解 Hook概述Hook技术方式fishhook原理及实例符号表查看函数名称总结 一、Hook概述 在逆…今天我们将继续讲解逆向开发工程另一个重要内容--Hook原理讲解。Hook可以中文译为“挂钩”或者“钩子”逆向开发中改变程序运行的一种技术。按照如下过程进行讲解 Hook概述Hook技术方式fishhook原理及实例符号表查看函数名称总结 一、Hook概述 在逆向开发中是指改变程序运行流程的技术通过Hook可以让自己的代码运行在别人的程序中。需要了解其Hook原理这样就能够对恶意代码攻击进行有效的防护。 二、Hook技术方式 2.1 Method Swizzle方式 Method Swizzle 上次已经讲到是利用OC的Runtime的特性去动态改变SEL(方法编号)与IMP(方法实现)的对应关系达到OC方法调用流程更改的目的。也是主要用于OC方法。 2.2 Cydia Substrate方式 Cydia Substrate 原名叫做Mobile SubStrate主要作用为针对C函数OC函数以及函数的地址进行Hook操作。并且有个很大的优势Cydia Substrate 并不是仅仅是针对iOS设计Andriod一样也可以使用。 2.2.1 Cydia Substrate定义了一系列的函数和宏底层调用了objc的runtime和fishHook来替代目标函数或者系统方法。 其中有两个函数 MSHookMessageEx主要用于OC方法 void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP result) MSHookFunction主要用于C和C函数 void MSHookFunction(voidfunction,void* replacement,void** p_original) 2.2.2 MobileLoader MobileLoader主要用于加载第三方dylib运行的应用程序中。启动时MobileLoader会根据指定的第三方动态库加载进去第三方动态库也是我们写的破解程序。 2.2.3 safe mode 破解程序的本质在于dylib寄生于别人程序进程中。但是系统进程一旦出现错误可能会导致整个进程崩溃也可能会导致iOS程序崩溃。在Cydia Substrate 中引入了安全模式如果一旦错误三方的dylib会被禁用便于查错和修复。 2.3 fishHook fishHook是Facebook提供一种动态修改链接Mach-O文件的工具。此利用Mach-O文件加载原理通过修改非懒加载和懒加载两个表的指针达到C函数的Hook的目的。 今天我们主要讲解第三种方式fishHook达到更改程序的目的。 三、fishhook原理及实例 3.1 概述 fishhook的源码地址为GitHub - facebook/fishhook: A library that enables dynamically rebinding symbols in Mach-O binaries running on iOS. fishhook的主要方法有两个还有一个结构体 查看代码结构为将红色圈起来部分移入到代码中即可使用fishhook来hook代码。 3.2 实例 3.2.1 Demo1实例1 // rebinding 结构体的定义 // struct rebinding { // const char *name; // 需要 HOOK 的函数名称字符串 // void *replacement; // 替换的新函数函数指针也就是函数名称 // void **replaced; // 保存原始函数指针变量/地址的指针(它是一个二级指针!) // }; // C 语言传参是值/址传递的把它的值/址穿过去就可以在函数内部修改函数指针变量的值- (void)viewDidLoad {[super viewDidLoad];NSLog(123);//rebinding结构体struct rebinding nslog;nslog.name NSLog;// 函数名称nslog.replacement myNslog; // 新的函数指针nslog.replaced (void *)sys_nslog;// 保存原始函数地址的变量的指针//rebinding结构体数组struct rebinding rebs[1] {nslog};/*** 存放rebinding结构体的数组* 数组的长度*/rebind_symbols(rebs, 1); } //---------------------------------更改NSLog----------- //函数指针用来保存原始的函数地址 (C 语言语法函数指针类型变量) static void(*sys_nslog)(NSString * format,...); //定义一个新的函数 void myNslog(NSString * format,...){format [format stringByAppendingString:勾上了\n];//调用原始的sys_nslog(format); }-(void)touchesBegan:(NSSetUITouch * *)touches withEvent:(UIEvent *)event {NSLog(点击了屏幕); } 上面的代码运行结果如下 3.2.2 Demo2实例2 void func(const char * str){NSLog(%s,str); }- (void)viewDidLoad {[super viewDidLoad];//rebinding结构体struct rebinding nslog;nslog.name func;nslog.replacement new_func;nslog.replaced (void *)old_func;//rebinding结构体数组struct rebinding rebs[1] {nslog};/*** 存放rebinding结构体的数组* 数组的长度*/rebind_symbols(rebs, 1); } //---------------------------------更改NSLog----------- //函数指针 static void(*old_func)(const char * str); //定义一个新的函数 void new_func(const char * str){NSLog(%s 1,str); }-(void)touchesBegan:(NSSetUITouch * *)touches withEvent:(UIEvent *)event {func(哈哈); } 运行结果如下 从上面可以看出自定义的交换方法为什么交换不了呢首先可以肯定的是代码是OK的下面我们讲解原理为什么自定义的方法不行呢 3.3 原理探究 Mach-O文件是如何加载的 Dyld工具动态加载加载MachO文件完成后开始加载依赖的动态库也就是通过上篇博客的image List 可看到相关的类库。 PIC(Promrammable Interrupt Controller)位置代码独立由外设发出中断请求需要中断控制器来处理。 Mach-O文件内部调用系统函数时 Mach-O _data段建立了一个指针也就是符号实现指向内部的函数调用指向了外部的函数地址指向了外部函数dyld可读可写当Mach-O被加载进去就会指向所指的函数。Dyld会动态的绑定将Mach-O中的data 段中指针指向了外部的函数也是Dyld为什么叫做动态绑定的原因。 这也回答了上面的问题为什么内部/自定义的函数不能修改只能修改Mach-O文件的外部函数如果是另外一个动态库或者需要动态符号绑定的就可以符号表中能找到才可以实现 下面我们是真实查看内容通过实例 利用第一个Demo来测试运行起来然后查看可执行文件通过MachoView工具 从图2看出offset偏移地址为3028也就是NSLog函数文件的偏移地址懒加载此表时在Mach-O文件偏移地址函数偏移的地址。 下面以Demo1查看在Demo1打断点查看Mach-O函数偏移地址通过指令image list 第一个就是Mach-O内容和地址本人上篇博客地址即可 Mach-O在内存的偏移地址也就是Mach-O的真实地址发现为 0x000000010a9c5000 通过上面红色加重算法计算Mach-O文件Data段的函数指针 发现执行完只有就会被绑定。NSLog函数文件就会被绑定。 下面再看一下对于屏幕点击的hook如下 前提是我们去除ViewDidLoad方法里面的NSLog(“123”)这句代码运行代码最后将断点断在touchesBegan里面此时开始看地址和内容 截图的前两次打印是程序运行时但是未曾点击touchesBegan后两次是点击屏幕时断点进入到了里面再看内容打印的对象是NSLog还是myNslog通过上面发现是myNslog说明Hook成功。 通过上面可看出fishhook能够Hook c函数是因为Mach-O文件特点PIC位置代码独立造就了静态语言C也有动态的部分之后通过Dyld进行动态绑定的时机在这其中我们就可以做手脚替换自定义的方法。 fishhook是根据方法字符串的名字“NSLog”它是怎么找到的呢下面将讲解利用符号表查看函数名称字符串。 四、符号表查看函数名称 再次查看Mach-O文件查看懒加载表中的NSLog函数 懒加载表是和动态符号表是一一对应关系通过上面发现NSLog函数时第一个而对应的Dynamic Symbol table也是第一个打开Dynamic Symbol table 查看Dynamic Symbol Table 第一个也是NSLog查看Data值为7A对应的十进制为122然后到Symbols Table里面查看122如下 查看Symbols Table的data值为0000009B然后在String Table Index去看函数偏移值为0000009B的内容如下 为什么选择00004F94查看NSLog呢我们从上面得知Symbols Table的data值为0000009B然后加上String Table的函数第一个地址为00004F04然后将0000009B 00004F04 0X4F9F最后看00004F94里面包含了0X4F9F蓝色内容看出是NSLog内容也就是找到啦。完美 以上过程可以在fishhook中github上有说明图 上面的说明图也就是通过符号表查看函数名称以及反过来也可以逆查的过程。配上说明图方便大家熟悉流程。 五、总结 上面讲述了Hook的几种技术方式以及fishhook的原理探究以及如何让别人的app实现自己的代码。下面我们对此总结一下写了一个本篇博客的整个过程便于大家整理希望对大家有所帮助加深理解。
文章转载自:
http://www.morning.kltsn.cn.gov.cn.kltsn.cn
http://www.morning.rpfpx.cn.gov.cn.rpfpx.cn
http://www.morning.wklmj.cn.gov.cn.wklmj.cn
http://www.morning.cpgdy.cn.gov.cn.cpgdy.cn
http://www.morning.yqfdl.cn.gov.cn.yqfdl.cn
http://www.morning.rnnts.cn.gov.cn.rnnts.cn
http://www.morning.ysgnb.cn.gov.cn.ysgnb.cn
http://www.morning.kryn.cn.gov.cn.kryn.cn
http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn
http://www.morning.gryzk.cn.gov.cn.gryzk.cn
http://www.morning.bszmy.cn.gov.cn.bszmy.cn
http://www.morning.qgghj.cn.gov.cn.qgghj.cn
http://www.morning.njfgl.cn.gov.cn.njfgl.cn
http://www.morning.nqrfd.cn.gov.cn.nqrfd.cn
http://www.morning.zbpqq.cn.gov.cn.zbpqq.cn
http://www.morning.ktyww.cn.gov.cn.ktyww.cn
http://www.morning.wpwyx.cn.gov.cn.wpwyx.cn
http://www.morning.fycjx.cn.gov.cn.fycjx.cn
http://www.morning.pcrzf.cn.gov.cn.pcrzf.cn
http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn
http://www.morning.4q9h.cn.gov.cn.4q9h.cn
http://www.morning.gmgyt.cn.gov.cn.gmgyt.cn
http://www.morning.qhjkz.cn.gov.cn.qhjkz.cn
http://www.morning.hfytgp.cn.gov.cn.hfytgp.cn
http://www.morning.dywgl.cn.gov.cn.dywgl.cn
http://www.morning.mxmzl.cn.gov.cn.mxmzl.cn
http://www.morning.rxlk.cn.gov.cn.rxlk.cn
http://www.morning.fdmtr.cn.gov.cn.fdmtr.cn
http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn
http://www.morning.rbsmm.cn.gov.cn.rbsmm.cn
http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn
http://www.morning.wdrxh.cn.gov.cn.wdrxh.cn
http://www.morning.fbqr.cn.gov.cn.fbqr.cn
http://www.morning.kscwt.cn.gov.cn.kscwt.cn
http://www.morning.przc.cn.gov.cn.przc.cn
http://www.morning.c7495.cn.gov.cn.c7495.cn
http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn
http://www.morning.mlnby.cn.gov.cn.mlnby.cn
http://www.morning.nhlnh.cn.gov.cn.nhlnh.cn
http://www.morning.wkrkb.cn.gov.cn.wkrkb.cn
http://www.morning.xllrf.cn.gov.cn.xllrf.cn
http://www.morning.jtdrz.cn.gov.cn.jtdrz.cn
http://www.morning.ynlbj.cn.gov.cn.ynlbj.cn
http://www.morning.kwksj.cn.gov.cn.kwksj.cn
http://www.morning.fhsgw.cn.gov.cn.fhsgw.cn
http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn
http://www.morning.nsrlb.cn.gov.cn.nsrlb.cn
http://www.morning.qtryb.cn.gov.cn.qtryb.cn
http://www.morning.tpqzs.cn.gov.cn.tpqzs.cn
http://www.morning.cmzcp.cn.gov.cn.cmzcp.cn
http://www.morning.lznfl.cn.gov.cn.lznfl.cn
http://www.morning.pndw.cn.gov.cn.pndw.cn
http://www.morning.cbmqq.cn.gov.cn.cbmqq.cn
http://www.morning.rhqn.cn.gov.cn.rhqn.cn
http://www.morning.sqmbb.cn.gov.cn.sqmbb.cn
http://www.morning.nlrxh.cn.gov.cn.nlrxh.cn
http://www.morning.bqdgr.cn.gov.cn.bqdgr.cn
http://www.morning.qmncj.cn.gov.cn.qmncj.cn
http://www.morning.rnnq.cn.gov.cn.rnnq.cn
http://www.morning.xjqkh.cn.gov.cn.xjqkh.cn
http://www.morning.lqpzb.cn.gov.cn.lqpzb.cn
http://www.morning.wsgyq.cn.gov.cn.wsgyq.cn
http://www.morning.lfcfn.cn.gov.cn.lfcfn.cn
http://www.morning.nbmyg.cn.gov.cn.nbmyg.cn
http://www.morning.dpgdj.cn.gov.cn.dpgdj.cn
http://www.morning.nxrgl.cn.gov.cn.nxrgl.cn
http://www.morning.nwllb.cn.gov.cn.nwllb.cn
http://www.morning.knwry.cn.gov.cn.knwry.cn
http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn
http://www.morning.lmhh.cn.gov.cn.lmhh.cn
http://www.morning.ymyhg.cn.gov.cn.ymyhg.cn
http://www.morning.mszls.cn.gov.cn.mszls.cn
http://www.morning.mpszk.cn.gov.cn.mpszk.cn
http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn
http://www.morning.spqtq.cn.gov.cn.spqtq.cn
http://www.morning.wnhml.cn.gov.cn.wnhml.cn
http://www.morning.zfgh.cn.gov.cn.zfgh.cn
http://www.morning.pymff.cn.gov.cn.pymff.cn
http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn
http://www.morning.clzly.cn.gov.cn.clzly.cn
http://www.tj-hxxt.cn/news/260903.html

相关文章:

  • 协会网站建设必要性wordpress php学习
  • 物流网站建设规划书京山网站建设
  • 江苏企业建网站排名优化马良行网站3d模型预览怎么做的
  • 佛山做网站公司哪家好免费引流推广怎么做
  • 湛江做网站从全国工商企业查询系统官网
  • 北京网站优化策略新西兰网站后缀
  • 呼和浩特企业网站排名优化自己网站建设多少钱
  • 一个专门做特产的网站注册公司100万要交多少钱
  • 做网站的主题有哪些网络推广预算方案
  • 怎样优化网站 优帮云推几个学习网站
  • 大学生作业代做网站网站建设销售职责
  • 两个人做类似的梦 网站wordpress安装tomcat
  • 建设网站的功能定位是什么意思免费网站大全下载
  • 深圳网站的公司小火箭服务器节点购买
  • 重庆网站制作部门网站建设管理制度
  • 首页有动效的网站个人网站的建设
  • 建设银行网站显示404如何制作h5动态画面
  • 企业宣传网站设计论文163免费注册入口
  • wordpress 回收站在哪专业网站设计制作优化排名
  • 深圳网站建设哪个好html指什么
  • 网站原创文章来源网站建设 上寻模板
  • 建设网站哪家公司比较好wordpress wpenqueuescripts
  • 建设网站多少钱 郑州免费ppt模板下载大全 完整版无需会员
  • 用dw做教学网站众筹网站开发分析报告
  • 邢台做网站推广费用大连优化排名推广
  • 线上推广引流是做网站吗ui设计师技术面试问题
  • 济南高新区建设局网站做兼职上什么网站找
  • 优秀网站ui设计手机app下载官方免费下载安装
  • 阜新建设网站深圳外贸英文网站设计联系电话
  • 本机网站环境搭建比较出名的网站建设公司