求解:双击下断,就莫名其妙变成“已注册”,怎么样另存可执行文件?
本帖最后由 wen415 于 2022-7-6 08:48 编辑1、图1某VB程序,OD打开,文本搜索“注册成功”,发现上方某跳转跳过了,找到这个跳
2、图2 找到有个JE的跳转,没有直接NOP,(直接NOP显示已注册,但右下方的仍是“未注册”字样)看到左下方有个提示“DS=00784160=0000”,于是转到“00784160”
3、在“00784160”处,双击下断,一不小心右下角变成“注册版”,原来屏毙的功能都可以使用了,见图3,图4
求哪位大侠指点一下,这是什么原因? 如何修改能存下修改后的可执行文件。
给个思路也行,多谢!
(附软件下载地址:http://down1.xinkao100.com/Download/xkgzxxjs/%E5%AE%89%E5%BE%BD%E9%AB%98%E4%B8%AD%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF%E5%AE%89%E8%A3%85%E5%8C%85.exe) wen415 发表于 2022-7-8 08:57
试了,果然大神 !多谢
大概什么原理?
赋值 0 变成 xor 0,即不对原始内容做更改。
初始化之前这个值是 -1。做布尔值(逻辑型)使用会被认为是“真”。 本帖最后由 爱飞的猫 于 2022-7-8 06:10 编辑
```asm
00472CB5 66:891D 60417800 mov word ptr ds:,bx
↓↓
00472CB5 66:311D 60417800 xor word ptr ds:,bx
```
没发现暗桩。这行的 89 改成 31 即可,一字节破解。
本帖最后由 hackerbob 于 2022-7-6 08:58 编辑
我觉得
je跳转跳到mov word ptr ds:,0x0是把00784160赋值为0,就是赋值为假,程序会判断00784160是否为假,如果为假,就是未注册,如果为真,就是已注册
我认为程序在初始化时00784160就是1,你下断阻止00784160被改写,就永远为真,程序应该还有别的代码也访问或改写了00784160
比如,初始化时,它为1,检查注册表,发现未注册,把数值改成0,你阻止它被改写,就是已注册
我只是业余的,有可能说错了 因为这个地址储存的是全局变量“注册成功”,不是代码。
你双击下断点把此处内存改为 0xCC 值。软件检测到不为 0 即注册成功。
你把赋值这个地址 0 的地方改成赋值其他值即可,即图1的位置。不过可能有暗桩,这个就得你自己检查了。 谢谢分享 hackerbob 发表于 2022-7-6 08:54
我觉得
je跳转跳到mov word ptr ds:,0x0是把00784160赋值为0,就是赋值为假,程序会判断0078416 ...
感谢提醒,我继续查 jixun66 发表于 2022-7-6 09:01
因为这个地址储存的是全局变量“注册成功”,不是代码。
你双击下断点把此处内存改为 0xCC 值。软件检测 ...
感谢您的指点,我来改值试试 wen415 发表于 2022-7-6 09:11
感谢您的指点,我来改值试试
改值我试过了,赋值为1不管用,改了好几个跳转还是不管用,然后我用hook,把那里程序开始时赋值为1,也不管用,看来是有暗桩。。。。。。 本帖最后由 wen415 于 2022-7-8 09:05 编辑
爱飞的猫 发表于 2022-7-8 06:09
```asm
00472CB5 66:891D 60417800 mov word ptr ds:,bx
↓↓
试了,果然大神 !多谢{:1_921:}
大概什么原理?
页:
[1]