因果逆向属于逆向思维吗?

117 2023-11-14 22:50

一、因果逆向属于逆向思维吗?

因果逆向属于逆向思维。

逆向思维方式一般分为四类:结构逆向思维,功能逆向思维,状态逆向思维,因果逆向思维.

结构逆向思维

它是指从已与有的事物的逆向结构形式中去设想,以寻求解决问题新途径的思维方法.在第四届中国青少年发明创造比赛中获一等奖的"双尖锈花针".发明者是武汉巿义烈小学的学生王帆,他把针孔的位置设计到中间,两端加工成针尖,从而使锈花的速度提高近一倍.这是一个结构逆向思维的典型实例.

功能逆向思维

它是指从原有事物相反功能方面去设想,以寻求解决问题的新途径的思维方法.谈到功能逆向思维,人们常常会联想到这么一句话,"失败是成功之母".3M公司的一个职员无意中发现,原来废弃的纸张经过一定的处理可以成为粘贴纸,从而为公司创造了巨额的利润.

状态逆向思维

它是指人们根据事物的某一状态的逆向方面来认识事物,引导创造发明的思维方法.过去木匠用锯和刨来加工木头,都木头不动工具动(实际上是人动).这样做,人的体力消耗较大.为了改变这一状况,人们从工具不动,木头动的角度出发,设计发明了电刨,从而大大提高了效率和工艺水平,减轻了劳动量.这里从木头静与动加工状态的改变,就可知它是与状态逆向思维的内容紧密相连的.

因果逆向思维

对已有的有关事物之间因果关系的认识作交换性思考.人们对事物因果关系的认识,可以由因到果,也可以由果溯因.人们可以水温的变化推知水的体积的变化,也可以由水的体积的变化推知水的变化.温度计正是一种逆向思考的产物.

二、逆向思考?

逆向思维也叫求异思维,它是对司空见惯的似乎已成定论的事物或观点反过来思考的一种思维方式。

敢于“反其道而思之”,让思维向对立面的方向发展,从问题的相反面深入地进行探索,树立新思想,创立新形象。

当大家都朝着一个固定的思维方向思考问题时,而你却独自朝相反的方向思索,这样的思维方式就叫逆向思维。

人们习惯于沿着事物发展的正方向去思考问题并寻求解决办法。

其实,对于某些问题,尤其是一些特殊问题,从结论往回推,倒过来思考,从求解回到已知条件,反过去想或许会使问题简单化。

三、逆向思维法的逆向思维的特点?

逆向思维的特点:

1、普遍性

逆向性思维在各种领域、各种活动中都有适用性,由于对立统一规律是普遍适用的,而对立统一的形式又是多种多样的,有一种对立统一的形式,相应地就有一种逆向 思维的角度,所以,逆向思维也有无限多种形式。

2、批判性

逆向思维是对传统、惯例、常识的 反叛,是对常规的挑战。

它能够克服思维定势,破除由经验和习惯造成的僵化的认识模式。

3、新颖性

逆向思维往往是出人意料,给人以耳目一新的感觉。

四、iOS 如何进行逆向工程?

本人逆向经验丰富,对ios和mac osx底层有过深入挖掘. mac和ios有互相借鉴的地方,所以以下提到的信息可能适用于ios或者mac。

  • 0x0.Background: 你必须要有很强的逆向sense,这个是逆向分析的基础,逆向的sense举个栗子:如果你发现看到一个产品之后能够大致猜出它的架构,它的关键部分,核心算法以及可能存在的bug,甚至能够猜出影响性能的是哪部分,这个需要很长时间的逆向分析和工程开发的经验。BTW:语言什么的就不说了,ARM,X86指令,Objective-C,C,C++
  • 0x1.Tools: 你需要掌握以下工具:otool,lipo,ar,libtool,class-dump,mach-o-view(有空读一读它的代码,自己编译以下,加点功能什么的),hopper disassemble,ida pro,gdb,xcode开发要会的就不提了,还有一个很有用的codeunsign,最后再推荐一个我写的一个magic类:cccssw/call_at_anywhere GitHub 这个类用途很广,发挥余地很多.
  • 0x2.Frameworks: 调用私有API什么的是最简单的部分,最直接的路径是去private frameworks下面根据frameworks的名称猜测各个framework是干什么的,然后用class-dump dump出header,在项目里面引用就可以用了.如果观察力到位,发现某些官方app有某些功能能够猜测出背后可能有调用私有api,反汇编这个官方程序就能找到私有api的调用形式.
  • 0x3.Kernel: ios 和macos都是bsd+mach-o的混合模型,网上有一个图很清楚,说明其架构的. mach-o 的格式学习的最佳途径就是看mach-oview这个开源项目的代码。
  • 0x4.Defend technics used by Apple:用得最普遍得就是利用xpcservice将调用放在另外一个可执行程序中,然后函数调用通过进程间通信完成,核心得逻辑不会在这个xpc调用里面,该xpc远程程序会继续调用底层frameworks,最后你就很难找到最核心的逻辑和算法到底在哪里了;关键部分用c实现,然后隐藏data structure,只留出必要的指针,hidden pointer的技术,keychain的实现就是这样做的,要逆向出它keychain的数据库格式非常难,尝试过,失败了;另外一方面可能考虑到代码的可维护性,大部分苹果的代码都有很详细的log,可能有开关控制log的打开关闭,如果能把log开起来,一个程序,framework就很容易跟踪了(静态分析),打开这些log一般要直接修改二进制文件,或者修改特殊的plist文件.
  • 0x5.static analysis:静态分析一般就是先定位最关键的地方,定位的方法很多,一般先开log,然后分析完log后通过关键字来找。定位成功后,没有什么底层技术时,你想要干的事情基本上就快完成了,逻辑就在你面前,汇编配合伪代码就很简单了(除了有FSM或者jmp table的情况,这种情况还是动态分析吧). 有些涉及到底层技术,有一种内核级别调用的陷入函数(涉及到mach-o内核机制)比较麻烦,这种情况也有一些办法,做起来怎么样都是限制大,这篇文章How I cracked the security foundation of Mac OSX System 提供了一些技巧和思路。
  • 0x6.dynamic analysis:动态分析要配合静态来做,主要还是用xcode的调试器或者gdb,xcode的符号断点.f6-f7-f6慢慢调.
  • 0x7.reimplement logics:功能重现,逆向里面经常要做的事情,一个加密算法,解密算法要重新实现一遍,让自己可以用。途径有两条:1.照着汇编写出汇编版,c版或者objective-c的实现;2.直接调用二进制中的函数. 途径1是考你功底的,功底深做起来就是个体力活而已。途径2有两条路,一是修改二进制文件,或者patch你要的逻辑到一个有架子了的二进制文件,二是计算函数地址动态加载。 重点讲一下途径2,静态修改很麻烦,直接暴露需要解决以下问题:mach-o文件中有两个section与export function有关,其中一个Symbol table和与之相关的String table较容易修改,另外一个是Dynamic loader info比较难修改,里面有的相对位置需要做uleb128转换,另外存储信息的格式是链表格式,解决这两个就可以了. 静态修改除了这些,mach-o前面与section对应的头信息也要修改,长度,位置偏移量.; 途径2的动态加载就不多说了,看我github的项目call_it_any_where 应该是目前为止最方便的方式。
  • 0x8.jail-development:越狱开发其实门槛比app store还要低.这一块与逆向有关的主要是hook class之类的,老外有一篇很详细的博文讲这块。貌似就在后面的blog list里面.
  • 0x9.security issues: 建议手机别越狱,mac和ios下的maleware其实比windows下面还难发现.;keychain里面即使最严格的ACL策略也是能够绕过的;

讲一讲会逆向的好处:逆向是一门艺术也是一种研究方法,能够让你弄清楚程序运行的本来面目。看别人的实现也可以用来提升自己的架构能力。逆向能够找到一些诡异问题的root reason。最重要的是逆向能力强后,对程序,代码,算法,数据结构,计算机体系的认识会深刻很多。做项目也会从容很多,不太再会遇到什么bug搞不定。另外个人认为在漏洞挖掘上比起fuzzy逆向才是正途。

不会逆向的程序员不是好程序员。

最后再给些blog供学习:

( 水平一般,如有错误和遗漏还请各位纠正、补充 ;-) )

五、逆向而行近义词?

近义词:逆水行舟

逆向而行就是有一条路是顺着的,大部分人都是顺着这条路走,但是总有一些人为了达成莫种目的选择逆着路前行,常用作褒义。

是在逆境中不断迎难而上,在你一直努力坚持和奋斗之后,会看到一番不一样的风景,也就是说会达到一种不一样的成功。

六、乘法逆向算法?

乘法中存在中性元素1,即对每个 a ∈ Z(m),都有 a * 1 ≡ a mod m。不是所有元素都存在乘法逆元。假设 a ∈ Z,乘法逆元 a^(-1) 可以定义为:a * a^(-1) ≡ 1 mod m如果元素 a 的乘法逆元存在,则可以除以这个元素,因为 b / a ≡ b * a(-1) mod m。当且仅当 gcd(a, m)= 1,一个元素的 a ∈ Z 存在乘法逆元 a^(-1)。其中 gcd 表示最大公约数;如果 gcd(a, m)= 1,那么 a 和 m 就互质或互素。

七、逆向搜索法?

逆向搜索就是从目标状态出发进行的搜索,通常是与正向搜索同时进行(双向搜索),如果正向搜索时新扩展的状态是逆向搜索中出现过的,将两段搜索路径连接起来就是找到了一个解(通常是一种搜索步数最少的解)。

如果反向搜索时新扩展的状态是正向搜索中出现过的,则与上述一样,也是一种最优解。逆向搜索既是一种技术,又是一种思维,广泛应用于计算机软件、互联网技术、电信技术、工业通用技术及贸易经济等领域。

八、何为逆向教学?

逆向教学是针对传统的以教师传授为主的教学而提出的,名为逆向使者,顺向课前学生。自主学习,提前来,先学后教,以学论教的教育理念是符合认知规律的。

逆向教学的第一特征是课前学生充分利用自己的自主学习,通过利用网络看课,是自主学习课程质疑提出问题,小组合作,研究讨论,教师导演巩固练习。

九、逆向而行意思?

逆向而行:就是有一条路是顺着的,大部分人都是顺着这条路走,但是总有一些人为了达成莫种目的选择逆着路前行,常用作褒义。

是在逆境中不断迎难而上,在你一直努力坚持和奋斗之后,会看到一番不一样的风景,也就是说会达到一种不一样的成功。

十、逆向而行网名?

逆流而上,逆风飞翔,逆战,逆向行舟,十字路口逆向而行,逆向而行向阳而生,激流勇进逆向而行,逆水行舟不进则退,逆行者,逆行的人

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片