记录一次逆向实战

admin 2026-05-19 05:36:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文记录了一次针对Go语言编写的渗透工具进行逆向分析的过程。通过DIE识别程序类型,利用未删除的符号表定位验证函数,分析密钥长度和验证逻辑,通过修改汇编指令绕过检查并处理程序自校验机制。关键步骤包括字符串定位、控制流分析、指令修改和NOP退出函数,提供了具体的逆向实战思路。 综合评分: 75 文章分类: 逆向分析,渗透测试,免杀,安全工具


cover_image

记录一次逆向实战

原创

studying-egg studying-egg

正在思考ing

2026年5月18日 19:38 江苏

在小说阅读器读本章

去阅读

前言

上午我们小队的WEB师傅提到需要一个渗透工具,但要激活码,秉持着“能省就省”的原则,我们小队把该工具破解了,这里记录一下学习过程。

免责申明

下面的内容仅供学习交流,请勿用于非法用途

学习内容

DIE查,发现是go语言编写的,但是好像没删符号表,所以函数名都是可读的

这里找到了验证逻辑

一开始想直接修改jz,但发现好像真正的循环校验逻辑存在于main_authCheck中,我们通过运行程序,随便输入一些内容,可以发现出现密钥格式错误的字段

通过字符串定位到关键位置

这里输入的长度会放到rbx寄存器里面,与0x40进行比较,说明输入的长度为64位

这里再定位到密钥验证失败这个字符串中

根据控制流判断出这里存在两个条件,我们反编译一下

基本可以判断出事这里个并列的比较条件 这里我们也不用让这个条件成立(这里牵扯到加密算法,需要花一些精力去搞),直接改判断条件将jz换成jnzjnz换成jz

这里我的IDA好像有点问题,没有办法修改源文件,只能修改IDA自身的数据库,这里可以尝试用010editor进行修改

改完之后程序运行,程序会出现闪退的情况,程序可能在运行时会校验自身逻辑是否被修改,这里尝试把所有os.exit函数全部nop

保存之后在命令行中运行

后来重新分析了一下,真正的退出点就在验证函数后面,由参数v0决定

结语

自我感觉思路比较“野”,不像正规军(本来也不是😐),希望各位师傅能提供一些更好的方法

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:正在思考ing studying-egg studying-egg《记录一次逆向实战》

记录一次逆向实战 网络安全文章

记录一次逆向实战

文章总结: 本文记录了一次针对Go语言编写的渗透工具进行逆向分析的过程。通过DIE识别程序类型,利用未删除的符号表定位验证函数,分析密钥长度和验证逻辑,通过修改
评论:0   参与:  0