网上看了很多视频和书,交了一些"学费",请问大佬们如何入门学习hook技术
----2019.2.20更新
我是一个毕业后才接触计算机编程的码农,相对于很多人来说,起步很晚,但是还算努力,目前是一个java游戏服务端的开发人员。从学习程序开始一直对会逆向的人非常崇拜,这次终于有机会接触到一点点逆向相关的知识,一上来就吃了很多"药",买了很多教训,不过在这中间也学到了非常非常多的东西。写下这个帖子,希望可以给有和我面临一样问题的人留下一点点帮助
我是某培训机构出来的,基础非常薄弱,学习了两个月就觉得培训机构水平实在不行,提出的问题那边的老师都没有办法给出满意的解答就自己出来了,也就进入游戏行业了,在我的概念中,最底层就是JDK和虚拟机了,java文件编译成class,然后class编译成机器码。对内存和汇编知之甚少,所以在刚开始想学习逆向的时候就想搞基本关于汇编和逆向的书来看,但是看的时候大多数都不懂在说什么,直到我看到了这样一个函数WriteProcessMemory ,这个函数经常出现在各种逆向的代码中,他是windows api,可以在windows平台下,写入进程的内存。我就在想,这是为啥,难道这个函数这么关键?
于是我想到了我可能要去了解一下程序运行原理了(说来真的是汗颜,写代码写了快三年了,马马虎虎混了个title,居然程序运行原理都不知道),然后我在一个地方看到了下面关键的一句话
程序要执行,要先被加载到内存
看到这句话我眼泪都要留下来了,原来od反汇编的是内存里面的机器码,我们操作的关键就在这里。cpu是执行内存中的指令,逆向和破解应该就是在这个上面下文章(这个只是我暂时的理解,各位大佬如果觉得不对轻喷),这个是我暂时觉得的一切的基础,改写内存中相应的指令,这样就可以改变软件执行的顺序和结构,达到某些目的。
知道了这点之后,终于开始看得懂最基础的入门书籍在说什么了,学习也变得更加有方向了
----2019.2.25更新
买了加密解密4终于到啦,会员转正拉,今晚看一会儿来更新
----2019.2.26更新
昨晚看腾讯课堂一个关于内存的讲解看睡着了,终于对计算机的内存和cpu有了一个粗浅的认识,也漫无目的的搜索了很多汇编相关的东西,能零零散散在od中找到一些东西,但是还是不太理解内存断点为什么能找到call,今天在腾讯课堂看到一个很不错的汇编课程,希望自己可以坚持看完。
兜兜转转之后,终于从一无所知的小白变成了一个可以写一些简单hook的菜鸡了,学习过程中除了给一些朋友的"细水长流",收集到了一些资料,希望可以对刚开始和我一样迷茫的程序员有一些帮助
《逆向工程核心原理》
《游戏外挂攻防的艺术》
王爽《汇编语言》
《加密解密4》
以上顺序是我看书的顺序,其实我一本都没有看完,我只挑了我认为有用的部分阅读了,并且在阅读的过程中,走马观花的看了以下的视频
https://bcdaren.com/中的逆向和汇编相关的部分,里面的老师说的真的很好,特别是关于堆栈图的绘制
还有就是看雪的课程里面的凌晨五点的汇编的视频
其实前几天,借助微软的Detour框架,可以实现简单的对windows的API进行一些简单的hook,例如CreateMute创建互斥体这种,今晚在玩CE的教程的时候,突然发现,CE的插入代码其实就是一个hook,然后啪啦啪啦写了一段hook代码是真的挺有成就感的。从求助那天开始算,过去了五天,终于算是迈出了逆向的第一步,以上的书籍和视频日后会一步一步看完,不知道为什么,在进入逆向的第一个简单诉求达成之后,突然觉得摸到了入门的门槛,可以自己阅读一些相关书籍,不会像之前那样有畏难情绪了,也有可能是在走马观花的时候把一些之前一堆看不懂的专业名词做了相应的了解。我觉得算是一个小小的突破。
这个帖子有一个回复贴,应该算是在看雪遇到的第一个有缘人。兄弟,不知道你能不能看到这个帖子的更新,其实作为一个程序员来说,除了日常白天的工作,当夜晚的时候打开计算机的时候,会有非常非常多的诱惑,有的可以让你捞很多银子,有的可以让你收获非常多的朋友,有的可以满足我们自己的虚荣心。但是在面对计算机的时候,其实面对的是自己,每一行代码都是自己的延伸,坚持下去,一定可以看到自己想看到的世界。或许在中途因为什么事情让一些事情看起来不那么顺利,一切都会好起来的,给你最美好的祝愿!
结帖
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-3-4 16:32
被kanxue编辑
,原因: