美文网首页iOS开发技能
逆向攻防的那点事

逆向攻防的那点事

作者: iOS小肖 | 来源:发表于2018-12-04 03:42 被阅读80次

攻:

 用monkey将逆向的项目ipa导入其中,用hook你要重写或者修改的代码。

第一种防护:

创建类,在类中load方法中 fishhook 对 runtime的 method swizz 及 setIMP,getIMP函数进行替换,打入动态库,mokeyapp就不能hook了,

攻:

越狱手机中,用theos工具创建Tweak项目,tweak编辑plist需要hook的进程。hook中编写hook的方法,打入动态库。当程序启动时,苹果会通过plist找到进程,将动态库注入到项目中。

第二种防护:

在项目中other linker flags 增加 _RESTRICT _restrict,dyld有2种阻止动态库的代码,1,设置uid,gid,但是上线后是不允许改变,还一种就是dyld会遍历macho文件中_RESTRICT _restrict字段是否存在,存在就会阻止动态库的注入。


攻:

更改macho文件中的_restrict的二进制字段。


防:

通过第一种防护,另外通过dyld的阻止方法可以判断macho中是否存在_restrict,如果不存在,则程序退出。


防止别人调试:

通过syscls可以获取当前进程是否被操作,通过与操作获取控制码。

通过prace 有个拒绝连接(PT_DENY_ATTACH),如果有直接闪退。(支付宝就是这样进行防护的)。

攻:

首先在monkey中增加一个符号(prace或者syscls)断点,bt获取其地址,再imagelist获取指令的动态库首地址,算出偏移地址,再找到app中的防护动态库中的可执行文件,用hopper打开,找到算出来的偏移地址(获取的偏移地址是指向下一条指令)。对此函数的汇编代码进行修改后导出,直接将前三段bl跳转到倒数后三段,即跳过你防护的代码。如果是fishhook改变runtime的method swizz,改变汇编获取常量的偏移地址。


防:

1.代码混淆,在pch文件中对需要防护的类名及方法名用宏定义,对方用hopper及ida对macho文件是很难找不到其方法名及方法。

2.字符串加密,将字符串放到char数组中最后加上\0,并对每个字符进行异或操作,然后再char数组再进行一次异或回来。

3.隐藏CCCrypt,加密都会用到此函数,通过dlopen获取句柄(第一个参数是CCCrypt动态库路径,第二个参数以懒加载形式RTLD_LAZY),通过dlsym(第一个参数是句柄,第二个是字符串“CCCrypt”,此字符串需要用第二个字符串加密)将CCCrypt结构体替换成自己写的结构体。

4.使用汇编进行系统调用,防止符号断点调试进行定位汇编代码。通过asm链接汇编代码,通过汇编代码svc  #0x80触发中断。通过syscall头文件找到底层函数名对应的定义数值。如prace汇编

asm(

 "mov x0,#31\n"

 "mov x1,#0\n"

 "mov x2,#0\n"

 "mov x3,#0\n"

 "mov w16,#26\n"//26就是prase,上面四个是传入的参数

 "svc  #0x80"//触发中断

)

5.重签名防护 ,描述文件的组织单位,通过字符串截取出来进行比较,此方法把前四种全部加进去进行防护,对方很难进行逆向项目的。

6.利用防护工具,LLVM进行逻辑混淆,防止classDump。

相关文章

  • 逆向攻防的那点事

    攻: 用monkey将逆向的项目ipa导入其中,用hook你要重写或者修改的代码。 第一种防护: 创建类,在类中l...

  • iOS 逆向

    iOS安全攻防了解iOS 逆向, 需要了解汇编的知识Hook 钩子, 勾住某个方法, 从而修改方法的实现 逆向简介...

  • 文章推荐之iOS逆向(1)-密码学(RSA)开端

    文章首发 要讲逆向,那么肯定少不了密码学,因为所有的逆向(攻防)都是对已加密的数据进行解密。所以我们必须初步了解加...

  • 逆向系列序章

    在连续阅读了两本IOS逆向有关的两本书籍《ios应用安全攻防实战》、《iOS逆向工程》后,了解iOS越狱相关知识的...

  • iOS逆向(1)-密码学(RSA)

    要讲逆向,那么肯定少不了密码学,因为所有的逆向(攻防)都是对已加密的数据进行解密。所以我们必须初步了解加密的方式有...

  • iOS逆向(1)-密码学(RSA)

    要讲逆向,那么肯定少不了密码学,因为所有的逆向(攻防)都是对已加密的数据进行解密。所以我们必须初步了解加密的方式有...

  • iOS逆向(1)-密码学(RSA)

    要讲逆向,那么肯定少不了密码学,因为所有的逆向(攻防)都是对已加密的数据进行解密。所以我们必须初步了解加密的方式有...

  • iOS逆向(1)-密码学(RSA)

    要讲逆向,那么肯定少不了密码学,因为所有的逆向(攻防)都是对已加密的数据进行解密。所以我们必须初步了解加密的方式有...

  • iOS逆向攻防实战

    前言 本文是自己对iOS逆向工程领域所学的一个总结,文中所用的例子仅为学习研究使用。 1. 逆向工程是什么? 从i...

  • 01-汇编基础(1)

    前言 从本篇文章开始,即将给大家分享关于iOS逆向安全攻防等相关的知识点,在分析逆向之前,我们必须掌握关于汇编的相...

网友评论

    本文标题:逆向攻防的那点事

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