zzzxc123 发表于 2020-8-8 11:35


试试写入这个注册表   你逆向的这个版本我下了之后看那个注册事件是空的 点了没反应

wanao2008 发表于 2020-8-8 14:42

本帖最后由 wanao2008 于 2020-8-8 15:18 编辑

zzzxc123 发表于 2020-8-8 11:35
试试写入这个注册表   你逆向的这个版本我下了之后看那个注册事件是空的 点了没反应
非常感谢您的回复!
经测试,完成正确。可是,我要学的是逆向的方法。
能否赐教?

另:虽然显示“本软件已经注册”,但是还是不能打印,不知为什么?是没有打印模块吗?

zzzxc123 发表于 2020-8-8 15:50

wanao2008 发表于 2020-8-8 14:42
非常感谢您的回复!
经测试,完成正确。可是,我要学的是逆向的方法。
能否赐教?


我感觉打印功能被阉割了 这应该就是一个试用版本
00407403下断点就会发现没有任何判断 直接提示未注册

wanao2008 发表于 2020-8-8 16:05

zzzxc123 发表于 2020-8-8 15:50
我感觉打印功能被阉割了 这应该就是一个试用版本
00407403下断点就会发现没有任何判断 直接提示未注册 ...
打不打印无所谓,我很好奇您的注册信息是怎么来的?
如果是用逆向得到的,可否提示一下方法?

zzzxc123 发表于 2020-8-8 17:10

00409602下段
F8单步

部分代码不一样是因为我用了去花指令插件

0.
00409650    E8 F7710000   call    0041084CSoftware\Microsoft\jsmkk\LOGIN\LOGIN 取字节集注册项此时正确值未知因为没注册所以返回的是0

0040968B    E8 BC710000   call    0041084C取字节集数据(正确值,文本型)

00409702    E8 45710000   call    0041084C结果到数值结果=0



下面是与本地计算的值对比
1.
00409717    68 04000080   push    0x80000004
0040971C    6A 00         push    0x0
0040971E    68 3FFD4C00   push    004CFD3F                         ; (211768 × 2153)÷ 391
00409723    68 01000000   push    0x1
00409728    BB 80114100   mov   ebx,<到数值>
0040972D    E8 1A710000   call    0041084C                        
到数值(“(211768 × 2153)÷ 391”)返回0
2.
0040973E    DD05 58FD4C00   fld   qword ptr ds:
00409744    DC65 EC         fsub    qword ptr ss:
00409747    DD5D E4         fstp    qword ptr ss:
0040974A    DD45 E4         fld   qword ptr ss:
0040974D    E8 C591FFFF   call    00402917
值44353402-0结果未变
3.
00409756    68 01030080   push    0x80000301
0040975B    6A 00         push    0x0
0040975D    50            push    eax                           eax=44353402
0040975E    68 01030080   push    0x80000301
00409763    6A 00         push    0x0
00409765    FF35 E4905400   push    dword ptr ds:      = 012C4CA0 十进制19680416
0040976B    68 02000000   push    0x2
00409770    BB D00B4100   mov   ebx,<位异或>
00409775    E8 D2700000   call    0041084C                        
位异或结果=59280346

4.
0040978B   .DB45 E0       fild    dword ptr ss:      =59280346
0040978E   .DD5D D8       fstp    qword ptr ss:
00409791   .DD45 F4       fld   qword ptr ss:         =0
00409794   .DC65 D8       fsub    qword ptr ss:
00409797   .D9E4          ftst
00409799   .DFE0          fstsw   ax
0040979B   .F6C4 01       test    ah,0x1
0040979E   .74 02         je      short 004097A2
004097A0   .D9E0          fchs
004097A2   >DC1D 99E94C00 fcomp   qword ptr ds:
004097A8   .DFE0          fstsw   ax
004097AA   .F6C4 41       test    ah,0x41                        
004097AD   .0F85 7E020000 jnz   00409A31                     ≠不跳转 可知Software\Microsoft\jsmkk\LOGIN\LOGIN内容应为59280346 将其转换为文本型再转到字节集(35

39 32 38 30 33 34 36)写到Software\Microsoft\jsmkk\LOGIN\LOGIN   
5.
把正确内容写入注册表后发现还提示未注册 重新开启软件0040978B 下断点会发现   已经变成了正确的值 但却变了 往上翻会看到变成了3.里的eax的值
0040978B   .DB45 E0       fild    dword ptr ss:      =44353402
0040978E   .DD5D D8       fstp    qword ptr ss:
00409791   .DD45 F4       fld   qword ptr ss:         =59280346
00409794   .DC65 D8       fsub    qword ptr ss:
00409797   .D9E4          ftst
00409799   .DFE0          fstsw   ax
0040979B   .F6C4 01       test    ah,0x1
0040979E   .74 02         je      short 004097A2
004097A0   .D9E0          fchs
004097A2   >DC1D 99E94C00 fcomp   qword ptr ds:
004097A8   .DFE0          fstsw   ax
004097AA   .F6C4 41       test    ah,0x41
004097AD   .0F85 7E020000 jnz   00409A31
6.
点击 00409765   .FF35 E4905400       push    dword ptr ds: 会看到 ds:=00000000 与3.里的对不上 所以应该还有一处对进行了赋值 右键复制二进制FF 35 E4 90 54 00
去掉FF35 搜索字节集
会跳到
004028FC|.C705 DC905400 A04C2>mov   dword ptr ds:,0x12C4CA0
00402906|.90                  nop
00402907|.90                  nop
00402908|.90                  nop
00402909|.A1 DC905400         mov   eax,dword ptr ds:
0040290E|.A3 E4905400         mov   dword ptr ds:,eax
7.
上面有两个跳转
004028B9|.FF0D E0905400       dec   dword ptr ds:    = 5dec减一 此段执行五次后 = 0下面的jnz就不会跳转所以应该不是这个跳转
004028BF|.90                  nop
004028C0|.90                  nop
004028C1|.90                  nop
004028C2|.90                  nop
004028C3|.833D E0905400 00    cmp   dword ptr ds:,0x0
004028CA|.0F85 43000000       jnz   00402913                  
8.
0040286C|.E8 CD000000         call    0040293E                   call内读取注册表 Software\Microsoft\jsmkk\LOGIN\BJH的内容 与0.步骤差不多
00402871|.8945 FC             mov   ,eax
00402874|.90                  nop
00402875|.90                  nop
00402876|.90                  nop
00402877|.90                  nop
00402878|.8B45 FC             mov   eax,
0040287B|.A3 DC905400         mov   dword ptr ds:,eax
00402880|.90                  nop
00402881|.90                  nop
00402882|.90                  nop
00402883|.90                  nop
00402884|.833D DC905400 00    cmp   dword ptr ds:,0x0
0040288B|.0F84 25000000       je      004028B6

删除LOGIN注册表会发现这里会正确的执行到mov   dword ptr ds:,0x12C4CA0
所以这里应该是一个校验如果LOGIN有内容就会读取BJH的内容进行0.-4.的校验 如果读取不到LOGIN内容就会正确赋值以便注册时使用
将0x12C4CA0转换到十进制(19680416)再转换到字节集(31 39 36 38 30 34 31 36) 写到注册表Software\Microsoft\jsmkk\LOGIN\BJH
重新打开软件会发现已经注册成功了

wanao2008 发表于 2020-8-8 22:28

zzzxc123 发表于 2020-8-8 17:10
00409602下段
F8单步



真高{:7_236:}

以我现在的水平真的看不懂。
保存下来研究!
感谢!!

haier8917 发表于 2021-1-13 01:20

软件在哪下的呢,我来看看这个软件的逆向

wanao2008 发表于 2021-1-15 18:28

haier8917 发表于 2021-1-13 01:20
软件在哪下的呢,我来看看这个软件的逆向

百度“精科电脑算命 V3.7”

haier8917 发表于 2021-2-8 14:23

dowdndx 发表于 2020-8-7 16:38
虽然nop三处地方可以直接变成注册版,但软件有重启验证(每次使用都要点注册,挺麻烦的)。需要再考虑考虑

你把这软件爆破了没呢

dowdndx 发表于 2021-2-8 14:53

haier8917 发表于 2021-2-8 14:23
你把这软件爆破了没呢

爆破了,结合参考了第七楼,其他功能可以通过字符串爆破。挺久的事了。{:5_188:}软件貌似是个阉割版,打印不了,但是爆破后可以通过ctrl+c复制。
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: 被“精科电脑算命”狂虐!