破解小记


 

声明:请支持使用正版软件,尊重原作者的劳动成果,

此文只做技术交流,如有他人利用,产生后果,不负

任何责任。

 

SourceInsight是我们常用的代码编辑器和浏览器,支持如C,C++,html等格式的代码,

使用起来非常的小巧,但无奈是商业软件,下载下来使用还是需要注册码,于是想到自己

试试破解,鉴于网上有提供的是破解注册算法的,在此我提供一种纯爆破思路,步骤如下:

我下载的是SourceInsight3.5版本,用PeiD查壳发现没有加壳,直接用OD加载,程序常

见的VC6.0所写,直接一步一步的跟进,

在00522116  |.  E82CE5F1FF   call    00440647    ; \产生界面以及输入框

跟进,发现程序首先进行读注册表等操作,

 0044068A  |.  68 D0DD5300    push    0053DDD0                         ;  ASCII "Source Insight\3.0"
0044068F  |.  E8 F73BFFFF    call    0043428B
00440694  |.  85C0           test    eax, eax                         ;  判断是否能打开注册表
00440696      75 16          jnz     short 004406AE
00440698  |.  68 E4DD5300    push    0053DDE4                         ;  ASCII "Cannot access registry keys"
0044069D  |.  6A 00          push    0
0044069F  |.  6A 00          push    0
004406A1  |.  E8 1018FDFF    call    00411EB6
004406A6  |.  83C4 0C        add     esp, 0C
004406A9  |.  E9 E6040000    jmp     00440B94
004406AE  |>  E8 41650000    call    00446BF4
004406B3  |.  85C0           test    eax, eax
004406B5  |.  75 16          jnz     short 004406CD
004406B7  |.  68 00DE5300    push    0053DE00                         ;  ASCII "Cannot access registry keys"

///

 00440718  |> \E8 312A0000    call    0044314E
0044071D  |.  85C0           test    eax, eax
0044071F  |.  74 24          je      short 00440745                   ;  测试电脑配置
00440721  |.  6A 31          push    31                               ; /Style = MB_OKCANCEL|MB_ICONEXCLAMATION|MB_APPLMODAL
00440723  |.  68 F4CE5B00    push    005BCEF4                         ; |Title = "Source Insight"
00440728  |.  68 B0D15300    push    0053D1B0                         ; |Text = "System resources are too low.  Restart Windows soon!"
0044072D  |.  6A 00          push    0                                ; |hOwner = NULL
0044072F  |.  FF15 C8C45200  call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA
00440735  |.  8945 D0        mov     dword ptr [ebp-30], eax
00440738  |.  837D D0 01     cmp     dword ptr [ebp-30], 1
0044073C  |.  74 07          je      short 00440745
0044073E  |.  33C0           xor     eax, eax
00440740  |.  E9 5C040000    jmp     00440BA1
00440745  |>  FF35 28975C00  push    dword ptr [5C9728]               ; /Arg1 = 00000000
0044074B  |.  E8 18ECFCFF    call    0040F368                         ; \Insight3.0040F368
00440750  |.  85C0           test    eax, eax
00440752  |.  75 05          jnz     short 00440759
00440754  |.  E9 3B040000    jmp     00440B94
00440759  |>  E8 F6690000    call    00447154
0044075E  |.  85C0           test    eax, eax
00440760  |.  75 05          jnz     short 00440767
00440762  |.  E9 2D040000    jmp     00440B94
00440767  |>  6A 01          push    1                                ; /Arg1 = 00000001
00440769  |.  E8 FF800000    call    0044886D                         ; \读取注册表中的序列号 用户名 公司 时间
0044076E  |.  8325 E05E5E00 >and     dword ptr [5E5EE0], 0
00440775  |.  837D 0C 00     cmp     dword ptr [ebp+C], 0
00440779  |.  75 1F          jnz     short 0044079A
0044077B  |.  FF75 08        push    dword ptr [ebp+8]                ; /Arg1
0044077E  |.  E8 CF550000    call    00445D52                         ; \Insight3.00445D52
00440783  |.  85C0           test    eax, eax
00440785  |.  75 13          jnz     short 0044079A                   ;  如果读取注册表失败
00440787  |.  68 38DE5300    push    0053DE38                         ;  ASCII "Window classes failed to register"
0044078C  |.  6A 00          push    0
0044078E  |.  6A 00          push    0
00440790  |.  E8 9016FDFF    call    00411E25
00440795  |.  E9 FA030000    jmp     00440B94
0044079A  |>  8D45 F8        lea     eax, dword ptr [ebp-8]           ;  加载程序资源 启动程序
0044079D  |.  50             push    eax                              ; /Arg3
0044079E  |.  FF75 14        push    dword ptr [ebp+14]               ; |Arg2
004407A1  |.  FF75 10        push    dword ptr [ebp+10]               ; |Arg1
004407A4  |.  E8 BF560000    call    00445E68                         ; \Insight3.00445E68
004407A9  |.  85C0           test    eax, eax
004407AB      75 05          jnz     short 004407B2                   ;  程序是否正常启动
004407AD  |.  E9 E2030000    jmp     00440B94
004407B2  |>  E8 417D0000    call    004484F8                         ;  对于注册表中读取到得序列号进行验证
004407B7  |.  85C0           test    eax, eax

读取到了注册表内容之后紧接着找到了关键点

说明:

在未破解程序中填写的注册用户”zxc”,公司”zxc”,序列号”CRACK  BY  CRACK07”(按此方

法破解之后可以改为任何值),用未破解的程序将此写入了注册表,以至于再次用OD打开不

会提示注册表读取错误

004407A4  |.  E8 BF560000  call    00445E68                 ; \Insight3.00445E68

004407A9  |.  85C0         test    eax, eax

004407AB      75 05         jnz    short 004407B2                  ;  程序是否正常启动

004407AD  |.  E9 E2030000  jmp     00440B94

004407B2  |>  E8 417D0000  call   004484F8 ;  对于注册表中读取到得序列号进行验证

 

如果直接改00407AB的值会出现程序非正常启动直接退出,所以还是要跟进call来查看验证

 00448539  |> \0FB605 FC5E5E0>movzx   eax, byte ptr [5E5EFC]
00448540  |.  85C0           test    eax, eax
00448542      74 27          je      short 0044856B                   ;  判断用户序列号是否合法 改为jnz
00448544  |.  68 FC5E5E00    push    005E5EFC                         ; /Arg1 = 005E5EFC
00448549  |.  E8 73D6FFFF    call    00445BC1                         ; \Insight3.00445BC1
0044854E  |.  85C0           test    eax, eax
00448550      75 17          jnz     short 00448569
00448552  |.  68 74FE5300    push    0053FE74                         ;  a valid serial number was not entered.\n\nplease run the source insight setup program to install it before running it.  do not just copy the insight.exe file.
00448557  |.  E8 2EFAFBFF    call    00407F8A
0044855C  |.  59             pop     ecx
0044855D  |.  E8 82F0FFFF    call    004475E4
00448562  |.  33C0           xor     eax, eax
00448564  |.  E9 C5010000    jmp     0044872E
00448569  |>  EB 12          jmp     short 0044857D
0044856B  |>  6A 00          push    0                                ; /Arg1 = 00000000
0044856D      E8 1D100000    call    0044958F                         ;  用户在注册表中的输入不合法,最简单的方法是直接改为NOP
00448572  |.  85C0           test    eax, eax
00448574  |.  75 07          jnz     short 0044857D
00448576  |.  33C0           xor     eax, eax
00448578  |.  E9 B1010000    jmp     0044872E
0044857D  |>  6A 01          push    1
0044857F  |.  58             pop     eax
00448580      E9 A9010000    jmp     0044872E                         ;  直接退出 改为NOP

跟进进入004484F8关键部分

也可以进入0048568之后进行修改

经过此修改即可以满足用户注册的需求,但是在破解之后会出现运行一段时间程序自动退出

的问题,后来发现是程序在运行中还会不断的检查是否到期,在0044085c进行修改即可

 0044083E  |> /E8 83440000    /call    00444CC6                        ;  进入循环
00440843  |. |E8 400EFEFF    |call    00421688
00440848  |. |6A 01          |push    1                               ; /RemoveMsg = PM_REMOVE
0044084A  |. |6A 00          |push    0                               ; |MsgFilterMax = WM_NULL
0044084C  |. |6A 00          |push    0                               ; |MsgFilterMin = WM_NULL
0044084E  |. |6A 00          |push    0                               ; |hWnd = NULL
00440850  |. |8D45 D4        |lea     eax, dword ptr [ebp-2C]         ; |
00440853  |. |50             |push    eax                             ; |pMsg
00440854  |. |FF15 58C55200  |call    dword ptr [<&USER32.PeekMessage>; \PeekMessageA
0044085A  |. |85C0           |test    eax, eax
0044085C     |0F84 ED020000  je      00440B4F                         ;  如果超出了时间 就什么也不做 不捕焦点改为NOP

由于图片大小限制放一张修改后程序运行图:


 

最后由于时间关系,修改后的程序中有一点不足,是每次运行都会提醒用户是否要新建工程

向导,有点类似Nag窗口

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值