浅谈逆向工程

声明

        本文章仅用作技术探讨,任何读者个人行为与作者无关!!!

        技术本无罪,掌握技术是好事,可以用来做很多正义的事情,相信我的读者们都是内心善良的人。但这里还是提醒大家,不论掌握何等技术,请时刻保持理性和善良,不要用技术做危害社会和他人利益的事情。不要抱有侥幸心理,须知人外还有人,天外仍有天,永远对技术保持敬畏之心。

前言

        朋友们,好久不见,作者夜观天象,发现紫薇星辰闪烁,预感近日有好事发生,数数日子发现又要到周末休息时间,是一个写文章的好日子,但是思来想去不知写什么题材,索性通过抓阄进行决定,最终就有了今天的题材"逆向工程的是是非非"。

        日常发癫结束,接下来就让我们进入正题,系好安全带,准备发车🚓

1.概述

1.1什么是逆向工程

        从字面意思来说,将正常的工作反过来进行,就是逆向工程。对于我们计算机行业来说,自然就是将开发人员的工作"编写代码->编译打包->生成可执行文件(即应用程序或app等)"反过来进行以达到特定目的的过程,这一过程就是逆向工程的核心思路。

        逆向工程是一个领域,也有很多细分的技术,例如js逆向、app逆向、小程序逆向等等,但是其本质都是大差不差的。

 1.2为什么要进行逆向工程

        通过前面的简单解释,我们已经知道了逆向工程是做什么的,那么我们为什么要进行逆向工程呢?我们知道逆向工程可以将目标代码进行还原,那么可能又有小伙伴想问“对于已经被还原的代码,我们又可以做什么呢?”小伙伴们请发散你们的思维,想一想拿到了一个程序的源码到底意味着什么。

        别着急,继续往下看,作者通过一个简单的例子告诉你其中的利害关系:

        作为一个干饭人,这里就以做饭为例:我们可以把日常所使用的app、软件等看作一道道已经做好的菜,大家可以根据自己的喜好向餐厅下单(即从应用商店下载软件),餐厅做好送到我们手中之后我们就可以直接享用美食了(即安装完毕,打开软件进行使用)。但现实中我们总会有一些自己的特殊喜好,同样的一道菜可能每个人喜欢的口味仍有差异,那么这时逆向工程的作用就得以显现。我们通过逆向工程就可以把菜还原成其原材料,再按照我们自己的独特喜好进行佐料添加制作成符合我们自身口味的菜品(即“软件->源码->新软件”)。

        可能有小伙伴会问“我为什么不直接告诉餐厅我喜欢什么口味,让他们做一份出来,还要自己煞费苦心的再去还原重组呢?”。对于这个问题,就像你告诉某鹅说"你们那个某鹅视频vip太贵了,给我搞一个免费就能看视频的软件来。"说到这里我想你应该明白为什么会有逆向工程了吧,某鹅忙着赚钱,不可能满足你的要求,那么你还想要达成目的,获取一个免费看视频的软件,自然只能靠你自己了。

        通过上述例子我想大家应该已经明白逆向工程一个重要的作用:"把一个软件通过还原重打包,改变成满足我们自身需求的新软件"。我们在使用软件时,经常会碰到有很多广告的软件,十分惹人厌烦,有心的小伙伴应该也在网上下载过打着"绿色无污染"标签的软件,它们与原软件作用完全相同(至少在体验上来说是如此),但是比之原软件却没有了讨厌的广告,这便是通过逆向工程满足日常所需的方式之一,也是逆向工程的一个典型应用。

2.逆向与反逆向之争

2.1什么是反逆向

        通过前面的讲解,我们已经了解了什么是逆向工程,那么对于反逆向工程想必大家也能猜到,没错,反逆向工程就是通过各种手段防止逆向者将程序破解的手段。

2.2常见的反逆向方法

        反逆向最常见的几种方式有代码混淆、数据加密、环境检测等等,高阶点的反逆向手段还有暗桩、反调试、写守护进程保护主程序等等方式。其实归根结底,都是增加逆向工程破解软件的难度。

2.3逆向与反逆向之争

        说到这里,逆向与反逆向之争,本质上就是逆向者不断尝试绕过反逆向的检测手段,例如通过动态分析定位被混淆的关键函数,进行代码还原将被混淆的代码还原等;反逆向者则会通过环境检测、无限debugger等方式不断阻止逆向者对代码进行破解。

        这是一场无休止的争斗,没有完全胜利的一方,有的仅仅是道高一尺和魔高一丈。

3.软件破解

3.1什么是软件破解

        想到大家肯定对这个话题感兴趣,因此还是来提一下,不过还是提醒大家破解软件是不道德的行为,甚至可能会有法律风险。

        其实通过上述逆向工程的例子,我想大家已经明白了软件破解的方法。无非就是将软件还原为源代码,将其中与付款和VIP等有关的逻辑进行修改重打包为新的软件。

3.2为什么网上学不到软件破解

        破解软件虽然为我们个人使用者提供了便利,但是却损害了软件开发者的权益。他们历经千辛万苦,投入大量人力物力开发出来的软件,本身就是为了获得其合法收益,并且也拥有着对自己所开发软件的著作权,因此破解软件是极其不道德的,是典型的损人利己行为。从道德层面上来讲,就应该受到公众的谴责。站在法律的角度来说,软件著作权也是企业的合法权益,侵犯企业的合法权益也是要承担法律责任的。因此是不会有这种类型的课程。

4.思维扩展

4.1逆向与免杀

        作为安全从业者,我们都知晓在安全圈比较高端的一个知识点,虽然会的人可能不多,但是一定人人都知晓,那就是免杀。

        本文既然是讲解逆向的有关知识,这里我为什么要提及免杀呢,其实逆向与免杀是不可分割的。我们前面提到了很多反逆向的手段,比如代码混淆等方式,这些方式可以使得代码难以被人肉眼直接识别,那么对于计算机而言同样如此,计算机上的杀毒软件也是由人开发出来的,人不认识的东西,软件也同样不认识。因此如果我们学习了逆向与反逆向的知识,那么对于免杀的进阶学习,自然而然的也会水到渠成。

4.2逆向与勒索病毒

        勒索病毒作为让人谈之色变的最广为人知的一种计算机病毒,其危害性是极大的,对企业造成的损失常常动辄几百上千万。圈外人士经常会有一个疑问,那就是勒索病毒为什么不可破解,但为什么又能听到存在勒索病毒被破解的风声。

4.2.1勒索病毒当真无敌?

        先来提一提勒索病毒为什么理论上不可破解:因为勒索病毒采用的方式是数据加密,不可破解并非是其技术有多么高深莫测。

        这就好比你注册了一个账号,让我破解你的账号密码,对于我而言破解难度可想而知,但是我会认为你技术很好吗?你只不过是注册了一个账号而已,这个操作本身而言并不具备多高的技术性。

4.2.2为什么有的勒索病毒可破解

        其实勒索病毒可破解的一种情况,是因为其逻辑问题所导致,这类勒索病毒本身就将解密密钥写在了其病毒内,但是需要特定的触发条件来触发。这里其实一般而言勒索病毒的作者就会通过各种反逆向手段,对其解密逻辑进行隐藏,使得其难以被逆向破解。但即便如此,也只是增大了逆向难度,一般通过od等工具进行栈分析仍能将其进行破解。这也就是可破解的勒索病毒最常见的一种情况。

        是不是感觉很好笑,明明此类勒索病毒更具备技术水平,但反而成了本末倒置,画蛇添足的做法。

综述

        这里想谈谈作者的创作心得:

        其实作者写文章的初心,一方面是对自己所学知识进行一个整体的分析和总结,看看自己能否将自己对一个领域内已掌握的知识进行关联刨析,以及理解是否深刻的检验。另一方面也是希望读者们能对一个领域有一个大概的认识,可以帮助大家对这个领域,这个行业的现状有一定程度的了解,然后再决定是否是自己喜欢的,是否进行深入学习。

        很多知识并非通过一篇文章或者一个案例就能说明,如果我以例子的形式,带领大家分析一个网站或app的逆向过程,且不论我能否成功破解,大家自身可能缺少前置知识,例如相应的代码知识、断点调试的能力、动态分析的知识等等,结果也只会是一头雾水。

        学习一途,欲速则不达,如果很容易就能掌握一门技术,又何谈技术壁垒呢?但是痛苦与受益也永远是成正比的,今日的痛苦栽树,终会有一日会换来丰硕的果实。莫问归处,只管前行,祝我的读者们都能成为各自领域的佼佼者。

        哈哈,作者又在这里给大伙灌毒鸡汤了,但是人总是要有一个坚持的理由,不论这个理由有多么可笑,或者多么滑稽,但是只要能鼓舞我们坚持向前,那么对我们来说,它就是世界上最完美的理由,诸位读者,有缘再见🤞

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值