wen415 发表于 2022-7-6 08:38

求解:双击下断,就莫名其妙变成“已注册”,怎么样另存可执行文件?

本帖最后由 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)

爱飞的猫 发表于 2022-7-8 09:21

wen415 发表于 2022-7-8 08:57
试了,果然大神 !多谢
大概什么原理?

赋值 0 变成 xor 0,即不对原始内容做更改。

初始化之前这个值是 -1。做布尔值(逻辑型)使用会被认为是“真”。

爱飞的猫 发表于 2022-7-8 06:09

本帖最后由 爱飞的猫 于 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:54

本帖最后由 hackerbob 于 2022-7-6 08:58 编辑

我觉得
je跳转跳到mov word ptr ds:,0x0是把00784160赋值为0,就是赋值为假,程序会判断00784160是否为假,如果为假,就是未注册,如果为真,就是已注册
我认为程序在初始化时00784160就是1,你下断阻止00784160被改写,就永远为真,程序应该还有别的代码也访问或改写了00784160
比如,初始化时,它为1,检查注册表,发现未注册,把数值改成0,你阻止它被改写,就是已注册
我只是业余的,有可能说错了

爱飞的猫 发表于 2022-7-6 09:01

因为这个地址储存的是全局变量“注册成功”,不是代码。

你双击下断点把此处内存改为 0xCC 值。软件检测到不为 0 即注册成功。

你把赋值这个地址 0 的地方改成赋值其他值即可,即图1的位置。不过可能有暗桩,这个就得你自己检查了。

Leeth 发表于 2022-7-6 09:08

谢谢分享

wen415 发表于 2022-7-6 09:10

hackerbob 发表于 2022-7-6 08:54
我觉得
je跳转跳到mov word ptr ds:,0x0是把00784160赋值为0,就是赋值为假,程序会判断0078416 ...

感谢提醒,我继续查

wen415 发表于 2022-7-6 09:11

jixun66 发表于 2022-7-6 09:01
因为这个地址储存的是全局变量“注册成功”,不是代码。

你双击下断点把此处内存改为 0xCC 值。软件检测 ...

感谢您的指点,我来改值试试

hackerbob 发表于 2022-7-6 09:18

wen415 发表于 2022-7-6 09:11
感谢您的指点,我来改值试试
改值我试过了,赋值为1不管用,改了好几个跳转还是不管用,然后我用hook,把那里程序开始时赋值为1,也不管用,看来是有暗桩。。。。。。

wen415 发表于 2022-7-8 08:57

本帖最后由 wen415 于 2022-7-8 09:05 编辑

爱飞的猫 发表于 2022-7-8 06:09
```asm
00472CB5      66:891D 60417800   mov word ptr ds:,bx
               ↓↓

试了,果然大神 !多谢{:1_921:}
大概什么原理?
页: [1]
查看完整版本: 求解:双击下断,就莫名其妙变成“已注册”,怎么样另存可执行文件?