书香 发表于 2024-2-10 12:39

【鲨鱼002课图文知识点梳理】

本帖最后由 书香 于 2024-2-10 12:45 编辑

逆向图文资料链接:Shark恒零基础逆向教程之图文版(共28课)

总系列链接:【书香编程系列教程】从零开始学编程语言

本系列上一级链接: 【易语言od联动学习系列简介】 (不是从上一级来的先返回上一级链接看大纲)
在002课中【S01E02】Shark恒 零基础逆向教程之图文版【获得注册码】中,shark恒站长为我们演示了一个获取注册码的功能

关于这一课,shark恒老师的文章很多人可能还没有领会到精髓甚至有点懵,看一下就划走了,shark恒老师的这一课实际上是对几乎所有本地验证+网络验证进行逆向操作的一个基础框架设计


这个教程实际上是shark恒老师少讲了一个操作步骤,应该是怕大家听不懂,毕竟很多人不懂开发,引入这个参数很多人可能直接就蒙了,但是大家已经跟我学过编程了,所以接下来我来为大家还原这种类型程序的全部操作流程

大家可以看到的就是name(用户名)和code(作者给你的授权码)这2个输入框,实际上少了一个参数,那就是机器码,这个软件全是英文的有些朋友可能看不懂,书香给大家写了一个



使用方法:
①:首先点击获取机器码,然后把用户名(随便写的)和机器码发给程序作者
机器码的意思是机器特征码,这个是自定义的,就是提取设备的硬件信息(cpu序列号、内存条序列号、硬盘序列号等等)进行混合运算后得出的结果,下面是我的取机器码的算法
.版本 2

.子程序 获取机器码, 文本型
.局部变量 cpu序列号, 文本型
.局部变量 机器码, 文本型

cpu序列号 = 系统_取CPU序列号 ()
机器码 = 文本_加密 (cpu序列号, “key”)' key是加密密码
返回 (机器码)


②:程序作者写了一个注册机,可以将用户名和机器码进行混合运算,得出的结果叫授权码(code),下面是我的取授权码的算法
注册机源码下载:
精易模块下载:(这个模块大家应该很熟悉了)

这是我写的一个自定义混合运算,文本_加密是精易模块的命令

.版本 2

.子程序 计算授权码, 文本型
.参数 机器码, 文本型
.参数 用户名, 文本型
.局部变量 返回值, 文本型

返回值 = 文本_加密 (机器码, 用户名)
返回 (返回值)



③:作者会把授权码发给你,你填写到软件上(授权码、code),然后点击登录


④:软件里也会有一个计算授权码的功能,算法和注册机一致
测试程序源码下载:

.版本 2

.子程序 _按钮_登录_被单击
.局部变量 计算出的授权码, 文本型
.局部变量 输入的授权码, 文本型
.局部变量 机器码, 文本型

机器码 = 获取机器码 ()
计算出的授权码 = 计算授权码 (机器码, 编辑框_用户名.内容)




.子程序 计算授权码, 文本型
.参数 机器码, 文本型
.参数 用户名, 文本型
.局部变量 返回值, 文本型

返回值 = 文本_加密 (机器码, 用户名)
返回 (返回值)


⑤:将计算得到的授权码和作者发给你的授权码去对比,如果一致这说明验证成功



这便是本地验证系列使用的全部过程

————————————————————————————


接下来我讲解一下shark恒老师的思路,大家有没有用过那种修改器的,比如玩个单机小游戏,我们可以去修改自己攻击、防御等,说的专业点就是内存操作

这个变量的数据是存储在内存的,shark恒老师相当于直接通过内存访问,读了这个变量存储在内存中的数据(授权码结果存储在里面),是不是突然有种充满智慧豁然开朗的感觉?

拓展难点:
这也是很多人在逆向中最常用的手段之一,我先等你计算完了,然后下个断点,然后内存修改计算的地方,然后下一句判断代码调用的就是修改后的数据了,这种手法就叫(叫什么呢,我也忘了,哈哈哈哈哈,我主要搞开发框架的,现在也不知道当前流行的行话叫什么,打补丁还是什么,我就叫他内存修改吧.......不要在意这些细节),所以我为什么说大家没理解shark恒老师这一课图文的精髓之处,别管什么数据加密,反正你最终要解密,我在你最终解密的地方下断点,然后内存写入我修改的数据(数据和你后台一样的,一般通过抓包等方式拦截获取的),这方法几乎可以通杀大多数程序,还是继续讲理论吧
——————————————————————————————

问题1:什么是CALL
CALL就是子程序,易语言里面带括号的,红色的代码,什么是关键CALL,这是人为命名的,你觉得他关键他就关键

问题2:为什么还要搜索“验证成功”等字符?
实际上就是为了找到判断的地方


问题3:判断(跳转,汇编代码叫je,其实je只是其中一个)上方找CALL的含义
对于本地验证而言,一般情况判断上面肯定是计算授权码的子程序功能

问题4:找到call以后呢
我知道肯定有人要怎么问的,其实文章上面有答案了,找到以后就下断点,od会帮我们读取内存数据



————————————————————————————

补充:把下面的课程好好再复习一下,060实在看不懂就算了
058:【CE工具的下载】                059:【CE修改内存】                  060:【代码实现内存修改】      

061:【程序的虚拟内存空间】

本系列上一级链接: 【易语言od联动学习系列简介】

lies 发表于 2024-2-10 14:36

谢谢,新年快乐~!

初心半夏丿 发表于 2024-2-10 17:08

感谢楼主热心分享

爱编 发表于 2024-2-22 20:35

不错,还是很有必要来刷一遍书香的分享,都能加深或有其他的感悟
页: [1]
查看完整版本: 【鲨鱼002课图文知识点梳理】