飘云阁(PYG官方论坛)

 找回密码
 加入论坛

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 74|回复: 1

[第十六轮] 【第四题】oCam爆破分析

[复制链接]
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 50 天

    [LV.5]常住居民I

    发表于 6 天前 | 显示全部楼层 |阅读模式
    本帖最后由 绝恋de烦神 于 2019-5-14 16:40 编辑

    【破文标题】【第四题】oCam爆破分析
    【破文作者】絕戀de煩神
    【作者邮箱】
    【作者主页】
    破解工具】OD
    【破解平台】WinXP
    【软件名称】oCam
    【软件大小】
    【原版下载】
    【保护方式】注册码+KEY,网络验证,重启验证
    【软件简介】ocam屏幕录像工具是一款好用的屏幕录像软件!ocam屏幕录像工具的功能十分强大,不仅仅不能进行屏幕的录制,还能够进行屏幕的截图。在使用ocam屏幕录像工具的时候,你可以选择全屏模式截图也可以选择自定义区域截图。
    【破解声明】游戏而已,有哪里分析错了,请大神们指导一下
    ------------------------------------------------------------------------
    【破解过程】

    程序在OD里没法直接运行,只能附加程序来调试

    运行程序,打开OD,找到程序的进程附加,然后回到程序里点注册,填写好邮箱地址和注册码后点确定

    1.jpg

    程序弹出“无效用户名或注册码”的提示,回到OD,F12暂时一下,ALT+K来到调用堆栈,右击最后一行→显示堆栈,来到程序领空,一直往下拉,在下面的retn下断

    2.jpg

    005E5C9F    E8 1C1DE2FF     CALL 004079C0
    005E5CA4    C3              RETN
    005E5CA5  ^ E9 F211E2FF     JMP 00406E9C
    005E5CAA  ^ EB F0           JMP SHORT 005E5C9C
    005E5CAC    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-0x8]
    005E5CAF    5B              POP EBX
    005E5CB0    8BE5            MOV ESP,EBP
    005E5CB2    5D              POP EBP
    005E5CB3    C3              RETN                                     ; 在这里下断,运行程序

    OD运程程序后,回到软件点确定,这里OD断下来,一路F8单步向下走,来到这里

    007A7CCC    B8 D07E7A00     MOV EAX,007A7ED0                         ; UNICODE "InvalidSerialNumber"
    007A7CD1    E8 4AFDECFF     CALL 00677A20
    007A7CD6    8B45 AC         MOV EAX,DWORD PTR SS:[EBP-0x54]
    007A7CD9    66:8B0D 487E7A0>MOV CX,WORD PTR DS:[0x7A7E48]
    007A7CE0    B2 01           MOV DL,0x1
    007A7CE2    E8 D97DFFFF     CALL 0079FAC0                            ; ↑这里可以看到注册时候的相关错误提示
    007A7CE7    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-0x4]           ; 一路F8后,来到这里
    007A7CEA    8B80 B4030000   MOV EAX,DWORD PTR DS:[EAX+0x3B4]
    007A7CF0    8B10            MOV EDX,DWORD PTR DS:[EAX]
    007A7CF2    FF92 04010000   CALL DWORD PTR DS:[EDX+0x104]
    007A7CF8    EB 2F           JMP SHORT 007A7D29
    007A7CFA    8D55 A8         LEA EDX,DWORD PTR SS:[EBP-0x58]
    007A7CFD    B8 047F7A00     MOV EAX,007A7F04                         ; UNICODE "InvalidEMailAddress"
    007A7D02    E8 19FDECFF     CALL 00677A20

    找到注册错误提示的地方了,我们在断首里下个断,运行程序,再次注册后断下来了,F8向下走

    007A7A32    55              PUSH EBP
    007A7A33    68 9D7D7A00     PUSH 007A7D9D
    007A7A38    64:FF30         PUSH DWORD PTR FS:[EAX]
    007A7A3B    64:8920         MOV DWORD PTR FS:[EAX],ESP
    007A7A3E    8D55 E0         LEA EDX,DWORD PTR SS:[EBP-0x20]
    007A7A41    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-0x4]
    007A7A44    8B80 B0030000   MOV EAX,DWORD PTR DS:[EAX+0x3B0]
    007A7A4A    E8 55A8D5FF     CALL 005022A4                            ; 取邮箱地址长度
    007A7A4F    8B45 E0         MOV EAX,DWORD PTR SS:[EBP-0x20]          ; 把邮箱地址给EAX
    007A7A52    8D55 F8         LEA EDX,DWORD PTR SS:[EBP-0x8]
    007A7A55    E8 567BC7FF     CALL 0041F5B0
    007A7A5A    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-0x8]           ; 把邮箱地址给EAX
    007A7A5D    E8 1AF7FFFF     CALL 007A717C                            ; 验证输入的邮箱地址是否合法
    007A7A62    84C0            TEST AL,AL                               ; AL是否为零
    007A7A64    0F84 90020000   JE 007A7CFA                              ; 如果AL=0,跳转实现,Game Over
    007A7A6A    8D55 DC         LEA EDX,DWORD PTR SS:[EBP-0x24]
    007A7A6D    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-0x4]
    007A7A70    8B80 B4030000   MOV EAX,DWORD PTR DS:[EAX+0x3B4]
    007A7A76    E8 29A8D5FF     CALL 005022A4                            ; 取假码长度
    007A7A7B    8B45 DC         MOV EAX,DWORD PTR SS:[EBP-0x24]          ; 把假码给EAX
    007A7A7E    8D55 F4         LEA EDX,DWORD PTR SS:[EBP-0xC]
    007A7A81    E8 2A7BC7FF     CALL 0041F5B0
    007A7A86    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-0xC]           ; 把假码给EAX
    007A7A89    8945 E8         MOV DWORD PTR SS:[EBP-0x18],EAX          ; [EBP-0x18] = EAX = 假码
    007A7A8C    837D E8 00      CMP DWORD PTR SS:[EBP-0x18],0x0          ; [EBP-0x18] 和0比较,输入了注册码了吗?
    007A7A90    74 0B           JE SHORT 007A7A9D                        ; 如果没有输入注册码,跳转就会实现
    007A7A92    8B45 E8         MOV EAX,DWORD PTR SS:[EBP-0x18]          ; 把存在[EBP-0x18] 里的假码重新给EAX
    007A7A95    83E8 04         SUB EAX,0x4                              ; EAX的地址 - 0x4
    007A7A98    8B00            MOV EAX,DWORD PTR DS:[EAX]               ; 把假码的长度给EAX
    007A7A9A    8945 E8         MOV DWORD PTR SS:[EBP-0x18],EAX          ; [EBP-0x18]  = EAX = 假码的长度
    007A7A9D    837D E8 13      CMP DWORD PTR SS:[EBP-0x18],0x13         ; 注册码长度和0x13(19)比较
    007A7AA1    0F85 22020000   JNZ 007A7CC9                             ; 不相等就Game Over
    007A7AA7    8B4D FC         MOV ECX,DWORD PTR SS:[EBP-0x4]
    007A7AAA    B2 01           MOV DL,0x1
    007A7AAC    A1 1C607A00     MOV EAX,DWORD PTR DS:[0x7A601C]          ; t`z
    007A7AB1    E8 E221EDFF     CALL 00679C98
    007A7AB6    8945 EC         MOV DWORD PTR SS:[EBP-0x14],EAX
    007A7AB9    33C0            XOR EAX,EAX
    007A7ABB    55              PUSH EBP
    007A7ABC    68 C27C7A00     PUSH 007A7CC2
    007A7AC1    64:FF30         PUSH DWORD PTR FS:[EAX]
    007A7AC4    64:8920         MOV DWORD PTR FS:[EAX],ESP
    007A7AC7    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-0x14]
    007A7ACA    05 D8030000     ADD EAX,0x3D8
    007A7ACF    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-0x8]           ; 把邮箱地址给EDX
    007A7AD2    E8 C902C6FF     CALL 00407DA0
    007A7AD7    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-0x14]
    007A7ADA    05 DC030000     ADD EAX,0x3DC
    007A7ADF    8B55 F4         MOV EDX,DWORD PTR SS:[EBP-0xC]           ; 把假码给EAX
    007A7AE2    E8 B902C6FF     CALL 00407DA0
    007A7AE7    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-0x14]
    007A7AEA    05 D4030000     ADD EAX,0x3D4
    007A7AEF    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-0x4]
    007A7AF2    8B92 C8030000   MOV EDX,DWORD PTR DS:[EDX+0x3C8]
    007A7AF8    E8 A302C6FF     CALL 00407DA0
    007A7AFD    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-0x14]
    007A7B00    8B10            MOV EDX,DWORD PTR DS:[EAX]
    007A7B02    FF92 3C010000   CALL DWORD PTR DS:[EDX+0x13C]            ; F7跟进
    007A7B08    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-0x14]
    007A7B0B    81B8 E4030000 6>CMP DWORD PTR DS:[EAX+0x3E4],0x1E61      ; [EAX+0x3E4]的值和0x1E61比较
    007A7B15    0F85 91010000   JNZ 007A7CAC                             ; 不相等就Over,相等就注册成功
    007A7B1B    33C0            XOR EAX,EAX
    007A7B1D    55              PUSH EBP
    007A7B1E    68 367C7A00     PUSH 007A7C36

    F7跟进CALL DWORD PTR DS:[EDX+0x13C]后,怎么看也不像是关键CALL,F9运行程序,弹出“无效用户名或注册码”提示,这时,回到OD同样采用F12暂停法来找到网络验证的关键地方

    007A6C26   /75 23           JNZ SHORT 007A6C4B
    007A6C28   |8D55 D0         LEA EDX,DWORD PTR SS:[EBP-0x30]
    007A6C2B   |B8 546F7A00     MOV EAX,007A6F54                         ; InvalidSerialNumber
    007A6C30   |E8 EB0DEDFF     CALL 00677A20                            ; ↑无效用户名或注册码的提示
    007A6C35   |8B45 D0         MOV EAX,DWORD PTR SS:[EBP-0x30]
    007A6C38   |66:8B0D 106F7A0>MOV CX,WORD PTR DS:[0x7A6F10]
    007A6C3F   |B2 01           MOV DL,0x1
    007A6C41   |E8 7A8EFFFF     CALL 0079FAC0
    007A6C46   |E9 27020000     JMP 007A6E72                             ; 返回到这里
    007A6C4B   \8D4D CC         LEA ECX,DWORD PTR SS:[EBP-0x34]          ; ↓往下拉,看到关键赋值
    007A6C4E    33D2            XOR EDX,EDX
    007A6C50    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-0xC]
    007A6C53    8B18            MOV EBX,DWORD PTR DS:[EAX]
    007A6C55    FF53 0C         CALL DWORD PTR DS:[EBX+0xC]

    ---------------------省略N行代码---------------------------

    007A6DE8    B8 9C6F7A00     MOV EAX,007A6F9C                         ; RegisterExpired
    007A6DED    E8 2E0CEDFF     CALL 00677A20
    007A6DF2    8B45 98         MOV EAX,DWORD PTR SS:[EBP-0x68]
    007A6DF5    66:8B0D 106F7A0>MOV CX,WORD PTR DS:[0x7A6F10]
    007A6DFC    B2 01           MOV DL,0x1
    007A6DFE    E8 BD8CFFFF     CALL 0079FAC0
    007A6E03    EB 6D           JMP SHORT 007A6E72
    007A6E05    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-0x4]
    007A6E08    C780 E4030000 6>MOV DWORD PTR DS:[EAX+0x3E4],0x1E61      ; 关键赋值,把0x1E61赋值给[EAX+0x3E4]
    007A6E12    EB 5E           JMP SHORT 007A6E72
    007A6E14    8D55 94         LEA EDX,DWORD PTR SS:[EBP-0x6C]
    007A6E17    B8 6C707A00     MOV EAX,007A706C                         ; InvalidResponseFromServer
    007A6E1C    E8 FF0BEDFF     CALL 00677A20                            ; ↑从服务器接收到一个无效的响应。
    007A6E21    8B45 94         MOV EAX,DWORD PTR SS:[EBP-0x6C]
    007A6E24    66:8B0D 106F7A0>MOV CX,WORD PTR DS:[0x7A6F10]

    既然找到了关键地方,那么就到段首下个断,重新注册一次看看

    007A6B22    66:837D 08 00   CMP WORD PTR SS:[EBP+0x8],0x0
    007A6B27    74 23           JE SHORT 007A6B4C
    007A6B29    8D55 E8         LEA EDX,DWORD PTR SS:[EBP-0x18]
    007A6B2C    B8 EC6E7A00     MOV EAX,007A6EEC                         ; ConnectionFailed
    007A6B31    E8 EA0EEDFF     CALL 00677A20                            ; ↑连接服务器失败。
    007A6B36    8B45 E8         MOV EAX,DWORD PTR SS:[EBP-0x18]
    007A6B39    66:8B0D 106F7A0>MOV CX,WORD PTR DS:[0x7A6F10]
    007A6B40    B2 01           MOV DL,0x1
    007A6B42    E8 798FFFFF     CALL 0079FAC0
    007A6B47    E9 43030000     JMP 007A6E8F
    007A6B4C    8D55 DC         LEA EDX,DWORD PTR SS:[EBP-0x24]
    007A6B4F    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-0x4]
    007A6B52    8B80 BC030000   MOV EAX,DWORD PTR DS:[EAX+0x3BC]
    007A6B58    8B80 98010000   MOV EAX,DWORD PTR DS:[EAX+0x198]
    007A6B5E    E8 C5F2FFFF     CALL 007A5E28                            ; 这个CALL返回字串"BNWO1ZTGjYeE2byinAzydg=="
    007A6B63    8B55 DC         MOV EDX,DWORD PTR SS:[EBP-0x24]          ; EDX =[EBP-0x24] = "BNWO1ZTGjYeE2byinAzydg=="
    007A6B66    8D45 E0         LEA EAX,DWORD PTR SS:[EBP-0x20]
    007A6B69    B9 00000000     MOV ECX,0x0
    007A6B6E    E8 111AC6FF     CALL 00408584
    007A6B73    8B45 E0         MOV EAX,DWORD PTR SS:[EBP-0x20]          ; EAX =[EBP-0x20] = "BNWO1ZTGjYeE2byinAzydg=="
    007A6B76    8D55 E4         LEA EDX,DWORD PTR SS:[EBP-0x1C]
    007A6B79    E8 FE04F9FF     CALL 0073707C                            ; 把字串解码
    007A6B7E    8B55 E4         MOV EDX,DWORD PTR SS:[EBP-0x1C]          ; 把解码得到的'-1'给EDX
    007A6B81    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-0x8]
    007A6B84    E8 2F1EC6FF     CALL 004089B8
    007A6B89    B2 01           MOV DL,0x1
    007A6B8B    A1 3C664700     MOV EAX,DWORD PTR DS:[0x47663C]          ; 撵G
    007A6B90    E8 0724CFFF     CALL 00498F9C
    007A6B95    8945 F4         MOV DWORD PTR SS:[EBP-0xC],EAX
    007A6B98    33C0            XOR EAX,EAX
    007A6B9A    55              PUSH EBP
    007A6B9B    68 886E7A00     PUSH 007A6E88
    007A6BA0    64:FF30         PUSH DWORD PTR FS:[EAX]
    007A6BA3    64:8920         MOV DWORD PTR FS:[EAX],ESP
    007A6BA6    B9 206F7A00     MOV ECX,007A6F20                         ; |
    007A6BAB    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-0x8]           ; EDX = [EBP-0x8] = -1
    007A6BAE    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-0xC]
    007A6BB1    E8 5EF3FFFF     CALL 007A5F14
    007A6BB6    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-0xC]
    007A6BB9    8B10            MOV EDX,DWORD PTR DS:[EAX]
    007A6BBB    FF52 14         CALL DWORD PTR DS:[EDX+0x14]
    007A6BBE    85C0            TEST EAX,EAX
    007A6BC0    0F8E 8E020000   JLE 007A6E54
    007A6BC6    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-0x4]
    007A6BC9    8B80 C4030000   MOV EAX,DWORD PTR DS:[EAX+0x3C4]
    007A6BCF    48              DEC EAX
    007A6BD0    74 0C           JE SHORT 007A6BDE
    007A6BD2    48              DEC EAX
    007A6BD3    0F84 52010000   JE 007A6D2B
    007A6BD9    E9 94020000     JMP 007A6E72
    007A6BDE    8D4D D8         LEA ECX,DWORD PTR SS:[EBP-0x28]
    007A6BE1    33D2            XOR EDX,EDX
    007A6BE3    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-0xC]
    007A6BE6    8B18            MOV EBX,DWORD PTR DS:[EAX]
    007A6BE8    FF53 0C         CALL DWORD PTR DS:[EBX+0xC]
    007A6BEB    8B45 D8         MOV EAX,DWORD PTR SS:[EBP-0x28]          ; EAX = [EBP-0x28] = -1
    007A6BEE    BA 306F7A00     MOV EDX,007A6F30                         ; 0
    007A6BF3    E8 8C20C6FF     CALL 00408C84                            ; 比较CALL,-1和0比较
    007A6BF8    75 12           JNZ SHORT 007A6C0C                       ; 不相等就跳

    经分析,以下为关键跳,爆破点可以选择这里

    007A6BC6    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-0x4]
    007A6BC9    8B80 C4030000   MOV EAX,DWORD PTR DS:[EAX+0x3C4]
    007A6BCF    48              DEC EAX
    007A6BD0    74 0C           JE SHORT 007A6BDE                        ; 这里不能跳
    007A6BD2    48              DEC EAX
    007A6BD3    0F84 52010000   JE 007A6D2B                              ; 这里可以跳,最好跳到关键赋值那里去
    007A6BD9    E9 94020000     JMP 007A6E72

    知道爆破点在哪,我们来修改一下

    007A6BD0    74 0C           JE SHORT 007A6BDE
    007A6BD2    48              DEC EAX
    改为
    007A6BD0    90              NOP
    007A6BD1    90              NOP
    007A6BD2    90              NOP

    007A6BD3    0F84 52010000   JE 007A6D2B
    改为
    007A6BD3    0F84 52010000   JE 007A6E05

    修改完成后,F9运行程序

    3.jpg

    4.jpg

    5.jpg

    注册成功,广告也去掉了,重启程序看看

    6.jpg

    提示无效用户名或注册码,点确定后程序变成未注册版,之前保存的注册信息应该也被删掉了

    7.jpg

    由于在OD里无法直接运行程序,只能附加调试,附加调试又对付不了重启验证,怎么办呢?

    在OD里搜索一下“InvalidSerialNumber”,发现一处可疑地方,怀疑就是启动验证的关键地方

    007D6C24   .  55            PUSH EBP                                 ;  重启验证?
    007D6C25   .  68 FA6D7D00   PUSH 007D6DFA                            ;  闱
    007D6C2A   .  64:FF30       PUSH DWORD PTR FS:[EAX]
    007D6C2D   .  64:8920       MOV DWORD PTR FS:[EAX],ESP
    007D6C30   .  66:837D 08 00 CMP WORD PTR SS:[EBP+0x8],0x0
    007D6C35   .  0F85 8F010000 JNZ 007D6DCA                             ;  这个跳可以直接跳过下面的比较和无效用户名或注册码的提示
    007D6C3B   .  8D55 DC       LEA EDX,DWORD PTR SS:[EBP-0x24]

    ---------------------省略N行代码---------------------------

    007D6CB5   .  8D4D D4       LEA ECX,DWORD PTR SS:[EBP-0x2C]
    007D6CB8   .  33D2          XOR EDX,EDX
    007D6CBA   .  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-0xC]
    007D6CBD   .  8B18          MOV EBX,DWORD PTR DS:[EAX]
    007D6CBF   .  FF53 0C       CALL DWORD PTR DS:[EBX+0xC]
    007D6CC2   .  8B45 D4       MOV EAX,DWORD PTR SS:[EBP-0x2C]
    007D6CC5   .  8D55 D8       LEA EDX,DWORD PTR SS:[EBP-0x28]
    007D6CC8   .  E8 2785C4FF   CALL 0041F1F4
    007D6CCD   .  8B45 D8       MOV EAX,DWORD PTR SS:[EBP-0x28]
    007D6CD0   .  BA 246E7D00   MOV EDX,007D6E24                         ;  false
    007D6CD5   .  E8 AA1FC3FF   CALL 00408C84
    007D6CDA   .  75 35         JNZ SHORT 007D6D11
    007D6CDC   .  B8 3C6E7D00   MOV EAX,007D6E3C                         ;  License
    007D6CE1   .  E8 FA00EAFF   CALL 00676DE0
    007D6CE6   .  8D55 D0       LEA EDX,DWORD PTR SS:[EBP-0x30]
    007D6CE9   .  B8 586E7D00   MOV EAX,007D6E58                         ;  InvalidSerialNumber
    007D6CEE   .  E8 2D0DEAFF   CALL 00677A20                            ; ↑无效用户名或注册码的提示
    007D6CF3   .  8B45 D0       MOV EAX,DWORD PTR SS:[EBP-0x30]
    007D6CF6   .  66:8B0D 806E7>MOV CX,WORD PTR DS:[0x7D6E80]
    007D6CFD   .  B2 01         MOV DL,0x1
    007D6CFF   .  E8 BC8DFCFF   CALL 0079FAC0
    007D6D04   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-0x4]
    007D6D07   .  E8 CCCFFFFF   CALL 007D3CD8
    007D6D0C   .  E9 9C000000   JMP 007D6DAD
    007D6D11   >  8D4D C8       LEA ECX,DWORD PTR SS:[EBP-0x38]
    007D6D14   .  33D2          XOR EDX,EDX
    007D6D16   .  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-0xC]
    007D6D19   .  8B18          MOV EBX,DWORD PTR DS:[EAX]
    007D6D1B   .  FF53 0C       CALL DWORD PTR DS:[EBX+0xC]
    007D6D1E   .  8B45 C8       MOV EAX,DWORD PTR SS:[EBP-0x38]
    007D6D21   .  8D55 CC       LEA EDX,DWORD PTR SS:[EBP-0x34]
    007D6D24   .  E8 CB84C4FF   CALL 0041F1F4
    007D6D29   .  8B45 CC       MOV EAX,DWORD PTR SS:[EBP-0x34]
    007D6D2C   .  BA 906E7D00   MOV EDX,007D6E90                         ;  true
    007D6D31   .  E8 4E1FC3FF   CALL 00408C84
    007D6D36   .  75 75         JNZ SHORT 007D6DAD
    007D6D38   .  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-0xC]
    007D6D3B   .  8B10          MOV EDX,DWORD PTR DS:[EAX]
    007D6D3D   .  FF52 14       CALL DWORD PTR DS:[EDX+0x14]
    007D6D40   .  83F8 02       CMP EAX,0x2
    007D6D43   .  75 68         JNZ SHORT 007D6DAD
    007D6D45   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-0x4]
    007D6D48   .  33D2          XOR EDX,EDX
    007D6D4A   .  8990 88050000 MOV DWORD PTR DS:[EAX+0x588],EDX
    007D6D50   .  8D4D C4       LEA ECX,DWORD PTR SS:[EBP-0x3C]
    007D6D53   .  BA 01000000   MOV EDX,0x1
    007D6D58   .  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-0xC]
    007D6D5B   .  8B18          MOV EBX,DWORD PTR DS:[EAX]
    007D6D5D   .  FF53 0C       CALL DWORD PTR DS:[EBX+0xC]
    007D6D60   .  8B45 C4       MOV EAX,DWORD PTR SS:[EBP-0x3C]
    007D6D63   .  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-0x4]
    007D6D66   .  81C2 88050000 ADD EDX,0x588
    007D6D6C   .  E8 9B94C4FF   CALL 0042020C
    007D6D71   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-0x4]
    007D6D74   .  83B8 88050000>CMP DWORD PTR DS:[EAX+0x588],0x0
    007D6D7B   .  7D 30         JGE SHORT 007D6DAD
    007D6D7D   .  B8 3C6E7D00   MOV EAX,007D6E3C                         ;  License
    007D6D82   .  E8 5900EAFF   CALL 00676DE0
    007D6D87   .  8D55 C0       LEA EDX,DWORD PTR SS:[EBP-0x40]
    007D6D8A   .  B8 A86E7D00   MOV EAX,007D6EA8                         ;  RegisterExpired
    007D6D8F   .  E8 8C0CEAFF   CALL 00677A20
    007D6D94   .  8B45 C0       MOV EAX,DWORD PTR SS:[EBP-0x40]
    007D6D97   .  66:8B0D 806E7>MOV CX,WORD PTR DS:[0x7D6E80]
    007D6D9E   .  B2 01         MOV DL,0x1
    007D6DA0   .  E8 1B8DFCFF   CALL 0079FAC0
    007D6DA5   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-0x4]
    007D6DA8   .  E8 2BCFFFFF   CALL 007D3CD8
    007D6DAD   >  33C0          XOR EAX,EAX                            ; 断首那个跳可以直接跳到这里
    007D6DAF   .  5A            POP EDX
    007D6DB0   .  59            POP ECX

    经测试,只要把地址为007D6C35的跳转代码修改一下就能跳过程序的重启验证

    007D6C35   .  0F85 8F010000 JNZ 007D6DCA
    修改为
    007D6C35     /E9 90010000   JMP 007D6DCA

    到这里,程序就爆破完毕了
    ------------------------------------------------------------------------
    【破解总结】
    1、注册码为19位
    2、如果注册码不是19位,不会触发网络验证
    3、修改3个地方就可以实现爆破

    ------------------------------------------------------------------------
    【版权声明】



  • TA的每日心情
    开心
    3 天前
  • 签到天数: 232 天

    [LV.7]常住居民III

    发表于 5 天前 | 显示全部楼层
    谢谢分享,分析的真好学习了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入论坛

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表