
这是我第一次发帖,如果有不对的地方管理看到了可以帮忙修改或删帖,谢谢。
1.2背景入坑逆向工程已经有一段时间了,起初学习这个技术就是从吾爱破解开始的,但是我记得看到了许多的论坛上的帖子,破解无壳的软件时都是几个步骤:1.pe查壳2.od载入3.搜索字符串4.找到关键字符串上最近的几个跳转,修改5.保存文件
然而,对于许多的软件,甚至是无壳软件,这都是没用的,总是百思不得其解,为什么搜不到字符串等,经过了长期的探索,看了许多书和视频教程,终于总结出了新手容易有的一些疑惑,在此一一阐述,开始吧!
2.在正式学习逆向工程之前的建议2.1至少掌握一种编程语言编程语言和人们日常交流时使用的语言最大的不同是:编程语言记录的是思维,而日常交流用的语言是要让别人知道自己的意思,所以,掌握编程语言的那种处理问题的思维是很重要的,而且,无论什么语言,其本身是不会变的,就像我最熟练的语言是C++(我现在还只是个学生),但是因为一些需求阅读到了一些C#的代码,发现要看懂其实不难,同样的变量声明方式,用.来取对象,这些一看就懂,所以只要你有编程思维,再来看这些东西会发现其实不难。
这里的观点你可能不赞同,但是没关系,这不是重点,这段话的重点是:在开始学习逆向时要先掌握一定的编程思维
2.2有耐心软件破解绝对不仅仅是查找几个字符串就搞定了的,这是一种思维上的比拼,你要通过调试工具,分析的是作者在设计这个程序是是怎么想的,香港永元证券有限公司了解他的思路,才在破解的过程中游刃有余。【例1】查找字符串的方式是很基本的破解方式,请简述其原理【解析】od搜索到了字符串,是因为这个地方引用了这个字符串,软件分析得到你的序列号是错的,所以弹一个消息框“无效的序列号”,在初始化消息框时就会将这个字符串压入栈中,但是,如果是正确的就不会弹这个窗口,所以肯定有一个地方决定是否弹这个框,也就是,你只要修改这个跳转,让它不弹这个窗口,就可以了。
2.3有扎实的汇编语言和操作系统底层处理功底如果有人告诉你软件破解就是查找几个字符串修改几个跳转的话,他不是误人子弟就是自己不会。在破解的过程中,不管是爆破还是追码,你都需要懂得作者的意思。
3.学习时需要注意的地方3.1要有系统的学习内容(不管你是看书还是看视频)逆向工程不会很简单,不是那种看几个帖子就能学会的,最好书和视频一起看,系统学习,才能发挥最好的效果。
3.2善于反思为什么要这样做?作者这样设计有什么好处?多问自己几个问题,这是进步的一个好方法。也更有利于总结出破解的一般方法。
3.3循序渐进冰冻三尺,非一日之寒。不要一开始就尝试高难度的软件破解,那些软件一般有高超的反调试技术和防破解技术,对于新手比较困难,不妨先从论坛中的无壳CrackMe开始,慢慢来,总有一天你可以达到较高的水准。
3.4给自己积极的鼓励虽然有时候会失败,但是也不要放弃,多给自己积极的暗示,相信自己能成功。
4.对新手常见问题的总结:4.1为什么程序没加壳还搜不到关键字符串搜不到关键字符串的原因有许多,排除加壳的原因,主要有两种:
1.语言方面:如果软件在编写的过程中使用的是英文字符串,为了支持国际化用了中文的language文件(ini或dll或db等),可以尝试查原语言字符串。2.简单加密:这里我举一个例子:我有一个字符串“注册成功”,那么,它在OD中是搜索的到的。如有一个程序代码如下:
智能仓位调节引擎|波动率自适应策略|永元证券提示:本文来自互联网,不代表本网站观点。