逆向工程。 故事。 我的


大家好


这次,这篇文章将不是技术性的(尽管会涉及一些技术性的术语/时刻),而是一篇自传体的文章(如果我可以这么说的话)。 本文是关于我的 来到这样的生活 我开始阅读的逆向工程,感兴趣的东西,使用的地方等。 而且,由于某些原因,我确定我的故事与您的故事会有很多不同。 走吧...


开始


一切仍始于遥远的童年。 我认为,像许多男人(也许是女孩)一样,我一直很想知道一切如何运作,为什么运作,为什么不运作等等。
首先,我开始拆解我所拥有的所有电池驱动的汽车(甚至是我哥哥所拥有的那些)。 当然,收集并非总是可能的,但是兴趣高于一切。 然后他从厨房里的父亲那里找到了一些旧的收音机录音机,也把它拆了。 也有他妈哥池 。 但是我什么都不懂:一个微电路,一个液滴和一个屏幕。 虽然可以,但我还是将屏幕分层了。
当然,对于所有未收集的东西,我都会戴上帽子。


世嘉超级硬盘



我父亲是在我生日那天买的:一个普通的海盗,因为当时没有任何执照,另外还购买了Contra: Hard Corps墨盒。 我敢肯定,到目前为止,还没有忘记为90年代的许多孩子购买机顶盒的时间(romhacker和Retro-gamers-你好!),对我来说,这也成为将来的关键。 但是首先是第一件事。


时间过去了,我成长了。 该学校一直对计算机科学和物理(以及化学)感兴趣。 当然,那里的汇编程序没有教过,但是在 (白俄罗斯为学校开发)的算法环境中进行编程非常均匀。 而且,当我去参加计算机科学领域的奥林匹克竞赛时,我感到震惊,除我以外的所有人都拥有蓝色的Turbo Pascal窗户,而我拥有白色的窗户。 但是,后来我获得了光荣的第三名。


十一年级



作者注释:同一台计算机,仅晚得多)


在2005年秋天,我买了一台电脑。 从第一天起,我就开始玩游戏。 在学校学习沉没,但体育馆的学习水平保持正常。 六个月后,我厌倦了比赛。 然后转折发生了!


诺海默尔


在我看来,那时是2006年,warez热潮开始了。 一堆带有裂缝,按键机制,补丁的站点。 每个人都试图以这种方式对安装程序进行重新打包(Windows版本打招呼),以便下载程序无需执行任何其他操作:安装并正常工作,尽管有时会从自身中添加一些内容。


我就是那样。 没错,他没有制造“ 平板电脑 ”,而是找到了它们,画了一个NFO盒子,重新包装了安装程序(通常是Inno Setup ),然后就知道了。



译者



所以,由于某种原因,我不喜欢不是所有程序都被翻译成俄语,所以我想修复它。 我上传了各种资源编辑器,例如Resource Hacker ,开始打开在“ Program Files找到的程序的所有exedll文件,并查看可以翻译哪些字符串资源。 我翻译了该文件,将其打包到安装程序.lng.RUS文件中,然后将其上传(我不知道这些rus文件是如何工作的)。 但这一直持续到我遇到打包和受保护的文件。


cracklab.ru


现在exelab.ru 。 在那儿,我了解到可执行文件已打包(有时是受保护的)以及如何处理。 并且,由于作者在文章中经常提到“ 汇编器 ”,“ 反汇编 ”,“ 卡拉什尼科夫邮件列表 ”之类的东西,因此我不得不深入研究材料。


我下载了几个“ crackmakes ”进行实验(在学习如何破解的同时专门编写了反向程序) 和保护 ) 我尝试过-我非常喜欢它! 一切都第一次出现了,我感到非常高兴。


结果,在补丁的帮助下(从“ 补丁 ”一词)中删除了简单的防御措施一两次,但是对于那些更困难的防御措施(我决定尝试色情检查赠品 ),它已经变得有点困难了,于是我停下来,决定返回翻译。



黑客攻击


有时在世嘉游戏时 ,我在游戏的标题屏幕上遇到了俄文的弹药筒,游戏的标题屏幕上有“ SHEDEVR Translation SHEDEVR ”,“ NEW-GAME.RU Translation ”的字样。 我不知道是开发人员还是第三方组织,但他们显然可以访问一些手稿,即苏美尔人的古老文字,这些文字告诉了如何将游戏翻译成俄语。 我想掌握这些知识。



因此,我发现了“ 杰作 ”论坛。


他们有文章,有程序-使您喜欢的游戏也成为“ 您喜欢的俄语游戏”所需的一切。 的确,这些文章仅适用于NES任天堂娱乐系统 ,或流行的DandySuybor )。 但是还是很酷! 我为自己陷入了新的激动人心的话题: Romhack和在PC上模拟复古游戏机。



简而言之,romhacking是指出于任何目的对游戏的图像或文件进行的任何更改:翻译,代码更正,图形。


这是一个非常有趣的过程:您坐下来,逐像素重新绘制游戏字体的正方形,使用用于翻译PokePerevod的程序翻译和粘贴文本,然后看看发生了什么。 没错,没有汇编程序适合您,只有硬核! 但这已经是很少有人可以跳过的门槛(根据Masterpiece论坛上活跃用户的数量来判断)。


我是老师


在做了一些“到桌子”的翻译之后,还有一些人的翻译之后,我回到了Windows可执行文件。 我对汇编程序有了更多的了解,所以我意识到我现在拥有太多的“ 秘密 ”知识,根据我的经验我可以说些什么,可以分享些什么,而现有文章中还没有描述什么。 我想将知识转移给和我一样的初学者(显然,这影响到我的母亲是老师的事实)。


在完成了第一个需要许可证的程序之后(几乎所有有关破解的文章都是以这种方式开始的),我决定对它进行研究,同时告诉我我在做什么。 这样看来,该程序似乎并不是专门从旧版本中提取的,经过长期研究,破坏了,但是相反,它将获得一个如此新鲜而相关的课程,包括屏幕截图和几乎没有绝对地址,以便在读者阅读时保持某种意义上的文章相关性。未来。


收到积极的反馈后,我越来越多地写信,意识到有需求。


工具



在撰写每篇文章时,我当时只尝试使用最新,最方便的程序:带有插件的Olly DebuggerPEiDPE Explorer和许多其他程序。 没有大多数作者习惯使用的SoftICEHIEWDEBUG.COM ,尽管在现代世界中使用它们确实很痛苦。


但是,那时我从未使用过IDA Pro 。 对我来说,这似乎很复杂且难以理解,很难在其中进行调试,而像Olly Debugger那样的FS[0x30]LastError类的最简单的东西也很难找到。


大学生会教反向吗?


简而言之,在白俄罗斯,情况非常严峻;据我所知,在俄罗斯和乌克兰也是如此。 怎么了 是的,因为在一个半组织中通常需要这个专业的专家,通常也需要一个半人。 实际上,没有那么多的老师。



是的,即使在某些大学中,当然也要教组装器。 只有查看汇编汇编列表的学生几乎无法意识到所有这些寄存器,操作数和操作码都以某种方式与信息保护,漏洞利用,破解,关键基因,补丁,恶意软件,防病毒软件,固件等相关联。


例如,在白俄罗斯,我只知道需要反向工程师的两个或三个地方。 在俄罗斯,情况当然更好,但是专家很少。


第一份工作


我决定去其中一家公司担任病毒分析员,但事实上,别无他法。
您可以逆转恶意软件,粘贴签名,研究恶意软件的操作原理,编写用于勒索软件的解密程序(如果可能),并一路改善内核。


原则上来说,这项工作还不错,但不久之后,我才意识到,观察恶意软件如何利用任何漏洞,而是自己亲自找到它们,是第一个这样做的人,它可以通过发送给开发人员的报告帮助保护信息世界。


其他组装


一旦我发现,除了Intel的汇编代码(16位,32位,64位)外,还有另外一个,起初似乎与您所知道的完全不同。 这是在我翻译自己喜欢的游戏《 Thunder Force III 》的那一刻发生的,我的哥哥在游戏中表现得比我更好。



事实证明,其中的资源已被某个未知的压缩程序压缩,因为 我无法使用任何图块编辑器找到该字体( 在此类程序中,游戏字母经常被重绘,并显示在屏幕上 )。


因此,我开始使用Google,最终偶然发现了一位法国人的作品,他刚刚弄清楚了游戏的压缩算法。 我联系了这个人,询问他如何研究压缩算法的原理,为此他把我的第一张IDB卡(这是IDA Pro数据库文件)扔给了我,其中解析了游戏代码的许多内容,这确实给我留下了深刻的印象!


因此,我陷入了IDA Pro和组装商Motorola 68000的丛林之中,直到现在我还没有从中退出。



PS 我没有翻译Thunder Force III ,但我为此编写了一个关卡编辑器。


索尼PlayStation



是的,下一个是“ 第一把卷发钳” 。 她还拥有另一个汇编器MIPS ,具有不同的寄存器,操作码和地址。 而且在此控制台上,仍然存在带有本地资源的收获游戏。


逆向思维和第一个关键因素


您知道什么对我来说是一次真正的考验吗? 仅使用可解压缩某些内容的汇编代码清单,为其编写包装器。 在这里,有必要发展逆向思维,这在修补“ crackmills ”的过程中实际上是不需要的,并且必须从贪婪中治愈程序。


我试图从相反的角度出发,了解应该在输出,在输入什么以及压缩数据的哪些字节负责什么,以便做到这一点。


为一堆用于解压缩和打包数据的游戏编写了更多实用程序后,我意识到自己已经准备好编写第一个密钥生成器,因为 已经学会了相反的思考。


我不记得它是什么样的程序,但是keygen成功了,而且从用户名中我总是能够获得正确的序列号。 文章中还讲述了什么。


Keygen文章


但是写一篇关于keygen的文章很困难。 重于编写密钥生成器。 因为 在本文中很难传达逆向思维的原理。 就像经验带来的一切一样。


饼干队



起初,如果您像我一样,进行了反向自学,那么您将为自己(或对人民)反向进行自学。 它适合你。 但是,然后您偶然发现了破解者团队的某种形式的发布(这些是发布带有破解和密钥生成程序的黑客软件的人),并决定加入他们。 在这里,您可以与他人比较自己的优势,同时也可以从他人那里获得经验。


团结一致,您写了一封信,要求您加入。 他们以密钥生成的形式发送任务。 您解决了该问题,然后他们使您可以访问聊天团队。


实际上,并非所有人都是反向者。 有人是艺术家,有人知道如何获得付费软件,有人具有计算能力(如果需要删除许可保护,则有能力在2013年的两天内RSA-512任何RSA-512公钥)。 通常,好处是显而易见的。 但是,该版本的软件仍然是您经常选择的软件。 而且您没有获得发行的钱。 事实是。


那你问什么呢? 它要在另一个团队( FFFCoRE和许多其他团队)之前发布。 网络系列“ 场景 ”很好地揭示了这个主题。


法律有问题吗?


是的,对于破解和密钥生成器的分发,仍然有雷电的机会(特别是如果该程序很流行并且花费很多钱)。 在任何时候,都可能会进行测试购买:一个给您写信“ 入侵Adobe / 1C 的叔叔会写信给您多少钱 ”(真实情况)。 但是这些家伙想生存,特别是如果没有工作,但是您想使用“ 技能 ”,那么到目前为止,都没关系。 他们开始走向极端...


...破烂的软件泛滥成灾,赚钱的破解程序。


而且,在渴望诚实生活的那一刻,饼干行将要找到一份工作,他的过去正在那儿挖掘,并且-“ 对不起,但您的过去对您不利! ”。 尽管从我的立场来看,应该以这样的经验来对待一个人,因为,首先,您给一个人改善的机会,其次,将他的知识指向正确的方向。 在我的熟人中,确实有在反病毒领域成功就业的例子,一位社会保障同志说他破解了程序。


诚实获得许可证密钥


是的,它确实发生了。 甚至饼干。 在某处有文章介绍如何向开发人员讨价还价。 因此,我尝试这样做。 它没有帮助。


在那些年里,我只是研究“ ”印刷机,并为此寻找合适的程序。 Shahidzhanyan 炸毁了大脑,所以我开始寻找替代方法。 偶然发现Typing Reflex 。 她得到了报酬,但很好。


然后,我将该程序翻译成白俄罗斯语,并向作者发送了一个语言文件。 为此,我收到了以我的名字命名的许可证密钥! 我的第一个许可证密钥。



接下来是什么?


作为海盗玩了足够多的游戏之后,您逐渐得出结论:有一份工作,薪水稳定,您正在做自己喜欢的事情,这意味着该是时候处理坏事了。


可以选择的选项包括:防病毒公司,工业安全性(反向固件,工业协议,漏洞搜索),某些大型公司(例如Sony )的特殊部门,您需要在其中研究自己产品的安全性或成为 强而有力 一个独立的逆向工程师,并可以通过奖励金赚钱,在会议上发表演讲等。


也有一些反向工程师是硬件工程师(那些反向硬件的工程师),但我对此一无所知。 虽然,这个话题非常有趣。 我更多地在软件方面。


必杀技


在查看了各种平台和汇编代码( IntelARMPowerPCM68K6502MIPS65c816BlackfinIA64等,我不记得了)之后,您得出的结论是,所有汇编器的原理几乎都相同(嗯,除了Itanium之外),您开始以不同的方式查看这些无尽的清单:首先,找到跳转命令, move命令,从函数返回, source哪一侧, dest以及环境。 所以你达到了必杀技...

Source: https://habr.com/ru/post/zh-CN438376/


All Articles