首页
社区
课程
招聘
[求助]在反汇编中,修改代码固定硬件号(已解决)
发表于: 2011-3-6 07:26 7037

[求助]在反汇编中,修改代码固定硬件号(已解决)

2011-3-6 07:26
7037
一、问题:最近,接触一软件。是根据硬件号,算注册码的。验算模块用的是“文档防泄密系统”,是个dll文件.用OD跟验算模块,只能找到硬件号的验算过程(能看见明码),但始终无法跟着注册码,估计是加了密运算的。现手中有一硬件码与之对应的正确注册码,在OD中修改硬件后(数据窗口中修改的),可正常注册,弹出正确注册的提示,并在其安装目录下生成注册码的文本文件,软件重启后失效,估计每次启动都要验算。
二、设想:由于手里有一硬件号与之对应的正常注册码。基本设想是通过修改验算模块的方法,使验算模块每次启动都显示有注册码的硬件号(也就是让验算模块把硬件号固定输出)。通过OD跟踪发现,在其对硬件号验算完之后,紧接的三行代码并不重要,主要功能是将硬件号统一转成大写字母(刚算完EDX中是大、小写字母混合的)。因此,想在这里改个call,另在程序的空档处写一段直接赋字符串的代码(将已知注册码的硬件号赋到寄存器中),返回后,再将这个字符串传到EDX,完成修改。
三、求助:1、此方法是否行得通??2、如果可行,请懂汇编的朋友,帮忙写段向寄存器中直接赋字符(ASCII码,大写的英文字母和数字)的代码,硬件号共占22个字节(在EDX中)。本人实在太菜,谢谢各位大虾!!!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
2
一次一密?膜拜
2011-3-6 20:34
0
雪    币: 255
活跃值: (297)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
由于程序是.net的,有时模块加载的基址发变化(只占百分之几),修改后的模块不能正常工作,重新启动软件一次或几次,就能正常了.主要原因是:我先在UltraEdit中找字符空档将欲固定的硬件号输入后,用"MOV EDX,×××××(硬件字符的偏移地址)"命令修改的.当加载基址发生变化,该偏移地址不能随着变化.但基本上不影响软件的使用(因为大多数时间没有发生变化).还望高手指点思路.
2011-3-8 15:32
0
雪    币: 5460
活跃值: (3227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是有办法,不过没有看到代码不知道怎么写
2011-3-8 20:38
0
雪    币: 255
活跃值: (297)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
已完全解决了.办法是用间接寻址方式.两条指令:MOV EBX,DWORD PTR SS:[ESP-8](8是堆栈中找到的模块镜像地址参考点);LEA EDX,DWORD PTR DS:[EBX+3C2B](3C2B是参考点距替代硬件号字符串的偏移)。完全OK了.在win32和win64系统中均能正常工作了.
2011-3-10 09:20
0
游客
登录 | 注册 方可回帖
返回
//