分析伤心跳棋注册验证
【文章首发于我的博客https://jameshoi.github.io/2021/03/30/note】先来看看这个软件界面,显示未注册,并且就算修改电脑思考时间也只能是1秒。
这个软件非常老,我找不到那个年代的upx脱壳,自己手脱会导致软件功能用不了(我修不好),不过脱壳后可以找到软件验证的位置。
要绕过注册验证很简单,软件在地址408727,40860B,402181有三次的验证,全部跳过即可。很玄学的地方是402181不能用修改字节码的方式打补丁,否则会导致另外两处的验证就算成功功能也还是用不了
所以上图这个if最后打补丁是用异常中断补丁修改eip成功的,可能软件有校验字节码是否被修改?最后附上补丁数据
下图是选择`修改EIP(NOP)`
破解后左上角没有显示未注册,而且可以修改电脑思考时间
软件注册算法有定位到,但我懒得看了,交给其他大家自己练手试试吧。
伤心跳棋原版软件https://jameshoi.github.io/2021/03/30/note/sxtq.exe 本帖最后由 jixun66 于 2022-7-1 09:07 编辑
算号需要替换公钥,公钥在文件头 0x80 处,直接替换即可。
```text
0080h: 35 38 34 35 34 42 32 36 33 39 32 37 37 41 44 3258454B2639277AD2
0090h: 44 39 42 30 44 33 34 43 31 39 30 37 32 35 38 32D9B0D34C19072582
00A0h: 34 46 42 37 46 31 35 34 33 30 38 46 38 30 42 354FB7F154308F80B5
00B0h: 36 32 38 37 46 46 33 31 35 46 36 37 31 46 46 396287FF315F671FF9
00C0h: 45 46 31 45 42 37 36 31 38 34 46 43 31 36 44 42EF1EB76184FC16DB
00D0h: 36 44 42 42 44 46 42 41 45 42 42 30 34 39 38 396DBBDFBAEBB04989
```
到此,Win7 下就可以快乐的进行算号了(当然,如果你也想算号,你得自己生成一对密钥来用)。
固定机器码(win10 下每次启动都会获取随机机器码)。
或者直接把 1337 文件补丁打进去也可以 -
固定机器码后就可以用固定的注册码了:
```
GKDo6wbjwhzRhVVE3m8pMTTJifnbzh8nKEGyY2e15L0bDEdDncIs1p93dBe9qMNp
```
然后测试一番,完美。
---
自校验:LZ 完全没有分析自校验部分。
替换的公钥也好,补丁机器码也好,分别有文件与内存自校验。
该贴中给出的补丁能让验证得出的校验码保持不变,因此无碍。
补丁后的文件校验值:
```text
File: sxtq_n2_p2.1.exe
CRC-32: 353539d5
MD4: ccf75b567a6f5c122baad114610fd951
MD5: 3a4c643889e4d27b4c0e3509c270c310
SHA-1: 0e7aad3b5b83de2f3651e69c560433762cc27052
```
---
最完美的当属硬算原始私钥,可惜分解因子做不来。
只能进行公钥替换… 理论很完美的计划,却因为 Win10 下的一些兼容性问题,导致每次生成的机器码都不一致~
意思就是 打不过电脑 所以伤心 tl;dr 发表于 2022-6-30 06:03
为什么叫伤心跳棋呢?
因为一下你就记住了{:301_971:} 感谢楼主分享 难道不是402181NOP就行?
感谢楼主分享{:1_927:} 感谢分享 本帖最后由 lighterleon 于 2022-6-30 11:27 编辑
谢谢楼主分享好东西 感谢分享