当前位置:首页 > 公众号精选 > Linux阅码场
[导读]1.背景群里有个小伙伴学习设计加密方法,如同某商用软件输入注册码后就能使用扩展功能。设计时他很自然的想着所写的加密措施是否足够健壮安全,是否有什么方法可以绕过加密检查,也就是破解。权限管理仅在启动后检查一次注册码是否有效——一个if判断,他也认定,若反汇编软件只要欺骗过这条判断加...

软件工程师,记录生活,沉淀认知" data-from="0">

1. 背景

群里有个小伙伴学习设计加密方法,如同某商用软件输入注册码后就能使用扩展功能。设计时他很自然的想着所写的加密措施是否足够健壮安全,是否有什么方法可以绕过加密检查,也就是破解。

权限管理仅在启动后检查一次注册码是否有效——一个 if 判断,他也认定,若汇编软件只要 欺骗过这条判断加密措施荡然无存。

群里我给他一个破解设计思想:“利用NOP指令覆盖相关代码绕开鉴权”

2. 演示

下面是我做的一个例子演示运用NOP指令破解:软件a.out在破解前不是vip,直接修改二进制文件后拥有了vip权限

它是怎么实现的呢?先看看源码,源码逻辑很简单,仅仅判断用户有没有money,没有钱当然没权限。

为了便于阐述原理,我编译源码带上调试选项:-g,生成的可执行文件a.out反汇编后就能同时看到源码和汇编内容。

void main(){ int money = 0; int vip = 1;
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); // 无效指令 if (money == 0) { vip = 0; }
printf("money %d vip %d\r\n", money, vip); if (vip == 1) { printf("授权成功\r\n"); } else { printf("未授权\r\n"); }}

a.dis 是反汇编文件,138行是vip=0的汇编代码 “movl $0x0,-0x4(%rbp)”, 对应机器码为 “c7 45 fc 00 00 00 00” , 左侧窗口内容是a.out二进制文件,文件第1168字节位置找到相应机器码。

3. 开始破解

接下来这么修改呢?轮到主角nop指令登场。

据我所知,每种处理器都会有一条瞎忙活空指令nop(No Operation)。CPU遇到nop指令仅空转,浪费你的电费,不干实际有意义的事情(其实空转也是为了更有意义的发挥效能,上班摸鱼是不是能更有活力!), 那么想办法把“vip=0”这条语句生成7字节机器码 “c7 45 fc 00 00 00 00”,替换成nop指令的机器码,是不是就破解了呢?如果nop机器码是2字节,我的还需考虑指令完整性对齐,覆盖机器码长度必须是nop机器码整数倍。

问题来了:x86的nop指令对应的机器码是什么呢?习惯性百度搜索 “x86 nop 机器码”。我这里介绍更简洁直接的方法,需要查询什么反汇编指令,问问反汇编工具objdump。

有没有注意到源码里我写了若干行指令 ‘asm(“nop”)’,c语言可以嵌入汇编,查看反汇编文件a.dis告诉我nop指令最终编译得到的机器码是什么。

汇编后nop的机器码是 0x90。谢天谢地,芯片工程师设计指令操作码时只给它一个字符。任何正整数都是1的整数倍,不用考虑指令完整性对齐。

顺带留给读者一个思考题:对于x86这种 CISC 复杂指令集,把nop指令的机器码设计成只有一个字节,有什么好处?

替换后的源码 “vip = 0” 这行如同被注释掉一样。

保存修改,再次执行,看到了吗!已经得到了VIP权限。

软件工程师,记录生活,沉淀认知" data-from="0">
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

德国埃朗根2024年4月16日 /美通社/ -- Elektrobit 今日宣布推出 EB zoneo GatewayCore——首款支持、配置和集成现代微控制器新一代硬件加速器的软件产品,可应用于先进的汽车电子/电气架...

关键字: 汽车 软件 硬件加速 通信网络

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

业内消息,日前欧洲软件巨头SAP宣布了一项重组计划推动人工智能增长,该计划将涉及大约8000名员工的岗位调整,这些员工将被纳入自愿休假计划和内部再培训措施,即鼓励员工自愿离职或进行内部转岗。

关键字: AI 重组 软件 裁员 SAP

业内消息,国家工信部近日公布了今年前三季度我国软件和信息技术服务业的具体情况,整体运行态势平稳,软件业务收入两位数增长,利润总额保持较快增长,软件业务出口降幅收窄。

关键字: 工信部 软件

嵌入式系统是一种特殊的计算机系统,它被嵌入到其他设备中,以完成特定的任务。嵌入式系统的结构组成是由硬件和软件两部器、输入输出设备和总线等组件,而软件部分则包括操作系统、应用程序和驱动程序等。

关键字: 嵌入式 计算机 软件

嵌入式软件系统是现代技术中广泛应用的一种软件形式,它通常嵌入在各种设备中,如汽车、电子设备、医疗设备等。由于这些设备的功能和性能对人们的生活至关重要,因此对嵌入式软件系统进行全面而有效的测试非常重要。本文将介绍如何对嵌入...

关键字: 嵌入式 设备 软件

安全态势可控、移动安全可及、安全开发可行

关键字: 软件 软件安全 智能终端

嵌入式系统已经成为现代生活中不可或缺的一部分,它们被广泛运用于各行各业,包括智能手机、汽车、家用电器、医疗设备等。在全球嵌入式软件市场中,中国作为制造业大国,自然也扮演着重要的角色。本文将详细分析国产嵌入式软件的发展趋势...

关键字: 嵌入式系统 软件 人工智能

在众多行业的数字化转型过程中,基于硬件的数据处理加速是构建高性能、高效率智能系统的关键之处,因而市场上出现了诸如FPGA、GPU和xPU等许多通用或者面向特定应用(如NPU)的硬件加速器。尽管它们的性能和效率都高于通用处...

关键字: 软件 硬件 FPGA GPU

上海2023年9月25日 /美通社/ -- 回顾"中国制造"的崛起之路,我们逐渐从「志造」、「制造」一路走到了「智造」,在如今智能化主导的时代中,制造仍然是有志者们的主战场,硝烟未散。亿个制造强者,才...

关键字: 软件 TOP P10 离散
关闭
关闭