飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 9604|回复: 12

[原创] DIY个人专版——屏幕录像大师

[复制链接]
  • TA的每日心情
    擦汗
    2021-4-10 23:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2009-8-6 00:41:39 | 显示全部楼层 |阅读模式
    【文章标题】: DIY个人专版屏幕录像大师
    【文章作者】: 漏网之鱼
    【作者邮箱】: [email protected]
    【作者主页】: http://lwzy-crack.blog.163.com
    【作者QQ号】: 530747686
    【软件名称】: 屏幕录像专家 共享版 V7.5
    【下载地址】: 自己搜索下载
    【保护方式】: 无壳,自校验
    【编写语言】: Borland C++
    【使用工具】: PEID 0.95  Olldbg1.10  Restorator  PE Explorer
    【操作平台】: XP sp3
    【软件介绍】: 非常好的一款屏幕录像软件。
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      准备工作:32*32的icon图片一张,还需要一个会使用键盘和鼠标的人一个。(呵呵!)
      
      开工了。我们先用  Restorator  载入“屏录专家.exe”,出现了一个资源文件的列表。点击“图标”这个选项前面的“+”展开资源,出现了
      
      3个资源,分别是“MAINICON”、“PAUSE”、“RECORD”我们用我们事先准备好的icon图片替换“MAINICON”这个图标。然后保存。保存以后
      
      呢,我们来运行“屏录专家.exe”,出现一个提示“本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安装”。
      
      
      
      通过这个提示,我们知道,是自校验。下面我们来处理这个自校验吧!
      
      
      用Ollydbg载入目标程序。用字符串插件搜索“本软件已经损坏”,一共有五处,我们分别下 F2断电。
      
      00411904    BA C3EB5400    mov edx,屏录专家.0054EBC3               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      0041260F    BA 38EC5400    mov edx,屏录专家.0054EC38               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      00412664    BA 73EC5400    mov edx,屏录专家.0054EC73               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      004126BC    BA AEEC5400    mov edx,屏录专家.0054ECAE               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      004408B9    BA F10D5500    mov edx,屏录专家.00550DF1               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      ————————————————————————————————————
      
      F9运行程序。程序在这里中断下来:
      
      004118DD    E8 36411200    call 屏录专家.00535A18
      004118E2    8B8D 8CFEFFFF  mov ecx,dword ptr ss:[ebp-174]
      004118E8    8B81 580C0000  mov eax,dword ptr ds:[ecx+C58]
      004118EE    05 18FCFFFF    add eax,-3E8
      004118F3    3B85 88FEFFFF  cmp eax,dword ptr ss:[ebp-178]
      004118F9    74 44          je short 屏录专家.0041193F
      004118FB    66:C785 A0FEFF>mov word ptr ss:[ebp-160],170
      00411904    BA C3EB5400    mov edx,屏录专家.0054EBC3               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      00411909    8D85 70FFFFFF  lea eax,dword ptr ss:[ebp-90]
      0041190F    E8 583E1200    call 屏录专家.0053576C
      ————————————————————————————————————
      
      
      通过分析,我们知道,只有让下面这个跳转实现,程序才能正常运行。有朋友说了,直接改为jmp就可以了。其实不然。这里面另有玄机。
      004118F9    74 44          je short 屏录专家.0041193F
      
      
      要想让上面的跳转实现,只有当 cmp eax,dword ptr ss:[ebp-178],这里的eax的值和[ebp-178]的值相等的时候,这个跳转才能实现。
      
      我们在004118F3这个地址F2 下断,重新载入程序,F9运行。提示“ly.exe无法关闭,请与作者联系”,(之所以会有这个提示,是因为刚才屏
      
      幕录像专家程序异常终止,没有把ly.exe的资源释放掉。)这时我们点确定按钮,重新载入,F9运行程序。
      
      ======================================
      在004118F3中断后,在信息窗口我们发现
      堆栈 ss:[0012FD34]=000081F1
      eax=00004CED
      ======================================
      这时我们用关掉Ollydbg(因为屏幕录像专家不支持多开。呵呵。不过呢,通过技术手段也可以实现多开的。),再用Ollydbg载入原版的程序。
      
      我们在命令行窗口输入
      bp  004118F3
      
      ======================================
      F9运行程序,中断后,在信息窗口我们发现
      堆栈 ss:[0012FD34]=00004CED
      eax=00004CED
      ======================================
      
      通过对比我们发现只有当[ebp-178]==EAX的时候,程序才能正常运行。好了,聪明的你该知道从哪里入手了吧。我们在命令行里面输入
      
      dd 0012FD34 (先做一下记录。我们只要观察 这里的值在什么时候等于 [0012FD34]=000081F1)
      
      
      然后在输入
      
      bp CreateFileW
      
      
      经过了N次  F9,当堆栈中出现下面信息的时候,
      0012F140   7C801A53  /CALL 到 CreateFileW 来自 kernel32.7C801A4E
      0012F144   7FFDFC00  |FileName = "D:\屏幕录像专家 共享版 V7.5\屏录专家.exe"
      0012F148   80000000  |Access = GENERIC_READ
      0012F14C   00000003  |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
      0012F150   00000000  |pSecurity = NULL
      0012F154   00000003  |Mode = OPEN_EXISTING
      0012F158   00000080  |Attributes = NORMAL
      0012F15C   00000000  \hTemplateFile = NULL
      ————————————————————————————————————
      
      清除断点,我们在命令行输入
      
      dd 0012FD34
      
      我们发现,当前的值是0,我们在地址 0012FD34  下硬件硬件访问断点-byte;F9运行程序,中断在这里。清除硬件断点
      
      0041152B   .  8BC3         mov eax,ebx                         ;  停在这里
      0041152D   .  E8 6A0AFFFF  call 屏录专家.00401F9C
      00411532   .  8BF8         mov edi,eax
      00411534   .  33C0         xor eax,eax
      00411536   .  83C9 FF      or ecx,FFFFFFFF
      00411539   .  8DB5 7CFAFFF>lea esi,dword ptr ss:[ebp-584]
      0041153F   .  F2:AE        repne scas byte ptr es:[edi]
      ————————————————————————————————————
      
      我们观察内存 0012FD34 处的值变为  000081F1
      向上看汇编代码
      0041151F   .  E8 881E0000  call 屏录专家.004133AC                  ;  我们可以分析出,这个call语句改变了EAX的值
      00411524   .  59           pop ecx
      00411525   .  8985 88FEFFF>mov dword ptr ss:[ebp-178],eax
      0041152B   .  8BC3         mov eax,ebx                         ;  停在这里
      0041152D   .  E8 6A0AFFFF  call 屏录专家.00401F9C
      ————————————————————————————————————
      
      在0041151F 这里下断点。重新来过,中断后,我们F7跟进去看看,里面是何方妖孽在作乱。进去后,我们一路F8,这时侯,我们要观察寄存器
      
      ,什么时候出现“81F1”当程序走过下面的call的时候,我们发现EAX,EDX寄存器的值都变为“81F1”
      
      
      
      0041345E   .  50           push eax                            ; /Arg3
      0041345F   .  56           push esi                            ; |Arg2
      00413460   .  8B55 08      mov edx,dword ptr ss:[ebp+8]        ; |
      00413463   .  52           push edx                            ; |Arg1
      00413464   .  E8 C3D10300  call 屏录专家.0045062C              ; \屏录专家.0045062C
      ————————————————————————————————————
      
      我们在 00413464  F2 下断点。重新来过。当程序中断在00413464 的时候,我们F7跟进去。来到这里:
      0045062C  /$  55           push ebp
      0045062D  |.  8BEC         mov ebp,esp
      0045062F  |.  53           push ebx
      00450630  |.  56           push esi
      00450631  |.  57           push edi
      00450632  |.  8B75 0C      mov esi,dword ptr ss:[ebp+C]
      00450635  |.  8B7D 08      mov edi,dword ptr ss:[ebp+8]
      00450638  |.  33DB         xor ebx,ebx
      0045063A  |.  68 05800000  push 8005                           ; /Arg2 = 00008005
      0045063F  |.  57           push edi                            ; |Arg1
      00450640  |.  E8 37330000  call 屏录专家.0045397C                  ; \屏录专家.0045397C
      00450645  |.  83C4 08      add esp,8
      00450648  |.  33C0         xor eax,eax
      0045064A  |.  3B45 10      cmp eax,dword ptr ss:[ebp+10]
      0045064D  |.  73 23        jnb short 屏录专家.00450672
      0045064F  |>  0FB7D3       /movzx edx,bx
      00450652  |.  C1FA 08      |sar edx,8
      00450655  |.  33C9         |xor ecx,ecx
      00450657  |.  8A0E         |mov cl,byte ptr ds:[esi]
      00450659  |.  46           |inc esi
      0045065A  |.  33D1         |xor edx,ecx
      0045065C  |.  40           |inc eax
      0045065D  |.  C1E3 08      |shl ebx,8
      00450660  |.  66:8B9497 50>|mov dx,word ptr ds:[edi+edx*4+850]
      00450668  |.  66:33D3      |xor dx,bx
      0045066B  |.  3B45 10      |cmp eax,dword ptr ss:[ebp+10]
      0045066E  |.  8BDA         |mov ebx,edx
      00450670  |.^ 72 DD        \jb short 屏录专家.0045064F
      00450672  |> \0FB7C3       movzx eax,bx                        ;  当程序走到这里的时候,我们发现EBX=81F1
      00450675  |.  8987 600C000>mov dword ptr ds:[edi+C60],eax
      0045067B  |.  8BC3         mov eax,ebx
      0045067D  |.  5F           pop edi
      0045067E  |.  5E           pop esi
      0045067F  |.  5B           pop ebx
      00450680  |.  5D           pop ebp
      00450681  \.  C3           retn
      ————————————————————————————————————
      
      
      00450672  |> \0FB7C3       movzx eax,bx   
       当程序走到这里的时候,我们看一下寄存器的值
      EAX 00204E58
      ECX 00000000
      EDX 000081F1
      EBX 000081F1
      ESP 0012F1A4
      EBP 0012F1B0
      ESI 027C4E5C
      ========================================
      
      
      我们在下面的地址开始打补丁
      
      先找一个零区
      0054A8DE    0000                 add byte ptr ds:[eax],al     ;零区
      
      在零区把下面的补丁代码写上。
      
      ===============补丁代码==============
      mov   ebx,4CED
      mov   edx,ebx
      movzx eax,bx
      mov   [edi+0C60],eax
      jmp   0045067B
      =====================================
      
      ----------------------------------------------------------------------------
      00450672  |> \0FB7C3        movzx eax,bx                        ;打补丁
      00450675  |.  8987 600C000> mov dword ptr ds:[edi+C60],eax
      0045067B  |.  8BC3          mov eax,ebx                         ;返回地址
      
      修改为
      00450672   /E9 67A20F00          jmp 屏录专家.0054A8DE                  
      00450677   |90                   nop
      00450678   |90                   nop
      00450679   |90                   nop
      0045067A   |90                   nop
      0045067B   |8BC3                 mov eax,ebx
      ----------------------------------------------------------------------------
      
      
      代码修改完毕,我们来保存一下。复制所有修改。保存为“修改图标.exe”关闭Ollydbg。
      
      运行 修改图标.exe ,OK 。可以运行。呵呵。这时,我们就修改好了屏幕录像大师的图标了。
      
      
      好累呀,呵呵,我打字很慢。文章写的还啰嗦。主要是为了让大家都能看懂。高手可以用眼睛扫一下就可以了。别仍我鸡蛋就好啊!
      
      
      
      
      
      
      
      
      
      下面我们继续DIY。
      我们录制好的录像的图片和屏幕录像大师图标是一样的。看的久了。是不是很难看呀。好吧。下面我就领着大家来修改这个图标。换成自己的
      
      图片。个性一定。虽然我是80后,但是对于90后的非主流我也不持反对态度。我也来个非主流吧。哈哈。
      
      说干就干。我用PE Explorer把“屏录专家.exe”的资源文件都看了一遍,也没有找到生成录像的图标。我就郁闷了。难度作者是动态生成的图
      
      标,不是资源文件,我开始怀疑了。这时呢,一道灵光在我的脑海里面一闪——我想起了灰鸽子配置服务端的dat文件。难道这个图标也在dat
      
      文件里面。我就看了一下软件安装目录内的dat文件。通过字面意思,我一眼就定位到了“犯罪嫌疑人”—— Play.dat
      
      我把Play.dat 文件修改后缀名。改为Play.exe,我发现,图标立刻变成和“屏幕录像.exe”一样了。这就更加证实了我的猜测了。我用
      
      Restorator  载入“Play.exe”,出现了一个资源文件的列表。点击“图标”这个选项前面的“+”展开资源,出现了1个“MAINICON”资源,
      
      我用事先准备好的icon图标替换,保存。我们在把Play.exe修改为Play.dat。运行“修改图标.exe”。
      
      出现了一个提示“本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安装”
      
      我晕,又是这个东西,烦死了。看来还有自校验呀。
      
      
      用Ollydbg载入“修改图标.exe”。用字符串插件搜索“本软件已经损坏”,一共有五处,我们分别下 F2断电。
      
      00411904    BA C3EB5400    mov edx,屏录专家.0054EBC3               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      0041260F    BA 38EC5400    mov edx,屏录专家.0054EC38               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      00412664    BA 73EC5400    mov edx,屏录专家.0054EC73               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      004126BC    BA AEEC5400    mov edx,屏录专家.0054ECAE               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      004408B9    BA F10D5500    mov edx,屏录专家.00550DF1               ; 本软件已经损坏,无法运行,请尝试杀毒,如果没有病毒,请重新安
      
      装
      
      ————————————————————————————————————
      
      
      F9运行程序。程序在这里中断下来:
      004125E0   > \8B85 8CFEFFFF      mov eax,dword ptr ss:[ebp-174]
      004125E6   .  8B90 540C0000      mov edx,dword ptr ds:[eax+C54]
      004125EC   .  81C2 0FFCFFFF      add edx,-3F1
      004125F2   .  3B95 84FEFFFF      cmp edx,dword ptr ss:[ebp-17C]
      004125F8   .  75 0C              jnz short 修改图标.00412606
      004125FA   .  81BD 84FEFFFF 7067>cmp dword ptr ss:[ebp-17C],6770
      00412604   .  74 44              je short 修改图标.0041264A
      00412606   >  66:C785 A0FEFFFF F>mov word ptr ss:[ebp-160],2F0
      
      
      看上面的代码我们知道,这里的校验和上面的原理是一样的。处理方法也一样。在004125F2下断点。重新来过。中断后,信息窗口
      004125F2   .  3B95 84FEFFFF      cmp edx,dword ptr ss:[ebp-17C]    ; 这里要让[ebp-17C] ==EDX
      ------信息窗口内容---------
      堆栈 ss:[0012FD30]=0000CD79
      edx=00006770
      ---------------------------
      
      在命令行里面输入
      
      dd 0012FD30      (先做一下记录。我们只要观察 这里的值在什么时候等于 [0012FD30]=00006770)
      
      
      然后再输入
      
      bp CreateFileW
      
      
      经过了N次  F9,当堆栈中出现下面信息的时候,
      0012F190   7C801A53  /CALL 到 CreateFileW 来自 kernel32.7C801A4E
      0012F194   7FFDFC00  |FileName = "D:\屏幕录像专家 共享版 V7.5\\play.dat"
      0012F198   80000000  |Access = GENERIC_READ
      0012F19C   00000003  |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
      0012F1A0   00000000  |pSecurity = NULL
      0012F1A4   00000003  |Mode = OPEN_EXISTING
      0012F1A8   00000000  |Attributes = 0
      0012F1AC   00000000  \hTemplateFile = NULL
      ————————————————————————————————————
      
      
      
      清除断点,我们在命令行输入
      
      dd 0012FD30
      
      我们发现,当前的值是0012FEFC,我们在地址0012FD30   下硬件硬件访问断点-byte;F9运行程序,中断在这里。清除硬件断点
      00411835   .  68 8CEB5400        push 修改图标.0054EB8C              ; /FileName = "hhctrl.ocx"
      0041183A   .  E8 3B871300        call    ; \LoadLibraryA
      ————————————————————————————————————
      
      我们观察寄存器,发现EAX=CD79
      
      向上看汇编代码
      00411829   .  E8 8A1D0000        call 修改图标.004135B8                  ;  F7跟进去
      0041182E   .  59                 pop ecx
      0041182F   .  8985 84FEFFFF      mov dword ptr ss:[ebp-17C],eax
      00411835   .  68 8CEB5400        push 修改图标.0054EB8C                  ; /FileName = "hhctrl.ocx"
      0041183A   .  E8 3B871300        call        ; \LoadLibraryA
      ————————————————————————————————————
      
      我们在这里00411829下断点。重新来过,程序中断后,F7跟进去,然后一路F8.当程序执行到00413695时,我们观察寄存器EAX=CD79,EDX=CD79
      
      0041368A   .  50                 push eax                            ; /Arg3
      0041368B   .  56                 push esi                            ; |Arg2
      0041368C   .  8B55 08            mov edx,dword ptr ss:[ebp+8]        ; |
      0041368F   .  52                 push edx                            ; |Arg1
      00413690   .  E8 EFCF0300        call 修改图标.00450684              ; \修改图标.00450684
      00413695   .  83C4 0C            add esp,0C
      ————————————————————————————————————
      
      我们在这里00413690下断点。重新来过。中断后,在这里 F7跟进去。
      00413690   .  E8 EFCF0300        call 修改图标.00450684              ;  F7跟进去
      
      
      
      进去后。停在下面的地方:
      00450684  /$  55                 push ebp
      00450685  |.  8BEC               mov ebp,esp
      00450687  |.  53                 push ebx
      00450688  |.  56                 push esi
      00450689  |.  57                 push edi
      0045068A  |.  8B75 0C            mov esi,dword ptr ss:[ebp+C]
      0045068D  |.  8B7D 08            mov edi,dword ptr ss:[ebp+8]
      00450690  |.  33DB               xor ebx,ebx
      00450692  |.  68 05800000        push 8005                           ; /Arg2 = 00008005
      00450697  |.  57                 push edi                            ; |Arg1
      00450698  |.  E8 DF320000        call 修改图标.0045397C              ; \修改图标.0045397C
      0045069D  |.  83C4 08            add esp,8
      004506A0  |.  33C0               xor eax,eax
      004506A2  |.  3B45 10            cmp eax,dword ptr ss:[ebp+10]
      004506A5  |.  73 23              jnb short 修改图标.004506CA
      004506A7  |>  0FB7D3             /movzx edx,bx
      004506AA  |.  C1FA 08            |sar edx,8
      004506AD  |.  33C9               |xor ecx,ecx
      004506AF  |.  8A0E               |mov cl,byte ptr ds:[esi]
      004506B1  |.  46                 |inc esi
      004506B2  |.  33D1               |xor edx,ecx
      004506B4  |.  40                 |inc eax
      004506B5  |.  C1E3 08            |shl ebx,8
      004506B8  |.  66:8B9497 50080000 |mov dx,word ptr ds:[edi+edx*4+850]
      004506C0  |.  66:33D3            |xor dx,bx
      004506C3  |.  3B45 10            |cmp eax,dword ptr ss:[ebp+10]
      004506C6  |.  8BDA               |mov ebx,edx
      004506C8  |.^ 72 DD              \jb short 修改图标.004506A7
      004506CA  |> \8BC3               mov eax,ebx                         ;  在这里打补丁
      004506CC  |.  5F                 pop edi
      004506CD  |.  5E                 pop esi
      004506CE  |.  5B                 pop ebx
      004506CF  |.  5D                 pop ebp
      004506D0  \.  C3                 retn
      ————————————————————————————————————
      
      通过观察代码我们发现和第一处校验的模式是一样的,直接F4到这里004506CA,观察寄存器的值
      ========================
      EAX 000A1400
      ECX 00000000
      EDX 0000CD79
      EBX 0000CD79
      ESP 0012F1A4
      EBP 0012F1B0
      ========================
      
      我们找一个零区来打补丁。
      0054A8FD    0000                 add byte ptr ds:[eax],al     ;零区
      
      
      ===============补丁代码==============
      mov edx,6770
      mov ebx,edx
      mov eax,ebx
      pop edi
      pop esi
      pop ebx
      jmp 004506CF
      =====================================
      
      =====================================================================================
      004506CA  |> \8BC3               mov eax,ebx                         ;  在这里打补丁
      004506CC  |.  5F                 pop edi
      004506CD  |.  5E                 pop esi
      004506CE  |.  5B                 pop ebx
      004506CF  |.  5D                 pop ebp
      004506D0  \.  C3                 retn
      
      修改为:
      004506CA   /E9 2EA20F00          jmp 修改图标.0054A8FD               ; 修改为
      004506CF   |5D                   pop ebp
      004506D0   |C3                   retn
      =====================================================================================
      
      
      代码修改完毕,我们来保存一下。复制所有修改。保存为“修改图标-DIY.exe”关闭Ollydbg。
      
      运行 修改图标-DIY.exe ,再次出现那个该死的提示了。郁闷……
      
      
      我们用Ollydbg载入“修改图标-DIY.exe”
      
      
      命令行里面输入
      bp 004125F2 (错误提示的地方)
      
      
      中断后,我们继续F8走,我们发现,
      00412604   /74 44                je short 修改图标.0041264A              ; 这里跳转实现,跳过了错误提示
      
      看来后面还有校验呀。
      
      
      命令行里面输入
      bp 004506CA (这里是我们第二次打补丁的地方)
      
      我们继续F9运行,程序中断在补丁代码处。一路F8,来到这里:
      00413A78      81FF 1B1A0000      cmp edi,1A1B                        ;  我们发现EDI=6770,这里是判断EDI是否等于1A1B
      00413A7E      75 0E              jnz short 修改图标.00413A8E
      00413A80    B0 01                mov al,1
      00413A82    8B55 CC              mov edx,dword ptr ss:[ebp-34]
      00413A85    64:8915 00000000     mov dword ptr fs:[0],edx
      00413A8C    EB 0C                jmp short 修改图标.00413A9A
      00413A8E    33C0                 xor eax,eax
      00413A90    8B55 CC              mov edx,dword ptr ss:[ebp-34]
      00413A93    64:8915 00000000     mov dword ptr fs:[0],edx
      00413A9A    5F                   pop edi
      00413A9B    5E                   pop esi
      00413A9C    5B                   pop ebx
      00413A9D    8BE5                 mov esp,ebp
      00413A9F    5D                   pop ebp
      00413AA0    C3                   retn
      
      ================================================================
      
      通过上面的分析,我们该找的给edi赋值的地方。向上看汇编代码。发现:
      00413A3F   .  E8 40CC0300        call 修改图标.00450684
      00413A44   .  83C4 0C            add esp,0C
      00413A47   .  0FB7F8             movzx edi,ax                        ;  EAX=EDX=6770,应该在此打补丁,是他们的值为1A1B
      00413A4A   .  56                 push esi                           
      00413A4B   .  E8 002B1100        call 修改图标.00526550            
      
      找零区
      0054A912    0000                 add byte ptr ds:[eax],al            ;零区
      
      ===============补丁代码==============
      add    esp,0C
      mov    eax,1A1B
      mov    edx,eax
      movzx  edi,ax
      jmp    00413A4A
      =====================================
      
      
      ————————————————————————————————————
      00413A3F    E8 40CC0300          call 修改图标.00450684
      00413A44    83C4 0C              add esp,0C
      00413A47    0FB7F8               movzx edi,ax                        ; EAX=EDX=6770,应该在此打补丁,是他们的值为1A1B
      00413A4A    56                   push esi
      00413A4B    E8 002B1100          call 修改图标.00526550
      ————————————————————————————————————
      
      修改为:
      
      00413A3F    E8 40CC0300          call 修改图标.00450684
      00413A44    E9 C96E1300          jmp 修改图标.0054A912
      00413A49    90                   nop
      00413A4A    56                   push esi
      00413A4B    E8 002B1100          call 修改图标.00526550
      ————————————————————————————————————
      
      代码修改完毕,我们来保存一下。复制所有修改。保存为“修改图标-DIY-1.exe”关闭Ollydbg。
      
      运行 修改图标-DIY-1.exe ,再次出现那个该死的提示了。我要疯了,这个程序……,同时我又一次从内心里对作者的编程功底和加密强度给
      
      予了非常高的肯定。
      
      
      
      
      
      
      
      
      
      再用Ollydbg载入“修改图标-DIY-1.exe”
      
      在命令行输入
      bp 004506CA (这里是我们第二次打补丁的地方)
      bp 00413A44 (监视程序打过补丁后,又做了什么)
      
      
      F9运行程序,中断在我们第二次打补丁的地方。F8单步走。
      004506CA   /E9 2EA20F00          jmp 修改图标.0054A8FD
      004506CF   |5D                   pop ebp
      004506D0   |C3                   retn
      ————————————————————————————————————
      
      当程序走到004126D4时,出现错误提示了。
      004126A6    E8 F9130000          call 修改图标.00413AA4
      004126AB    59                   pop ecx
      004126AC    3D 3EED0000          cmp eax,0ED3E
      004126B1    74 44                je short 修改图标.004126F7
      004126B3    66:C785 A0FEFFFF 080>mov word ptr ss:[ebp-160],308
      004126BC    BA AEEC5400          mov edx,修改图标.0054ECAE
      004126C1    8D85 C0FEFFFF        lea eax,dword ptr ss:[ebp-140]
      004126C7    E8 A0301200          call 修改图标.0053576C
      004126CC    FF85 ACFEFFFF        inc dword ptr ss:[ebp-154]
      004126D2    8B00                 mov eax,dword ptr ds:[eax]
      004126D4    E8 5BA20D00          call 修改图标.004EC934                  ; 这里出现错误提示
      ————————————————————————————————————
      
      我们向上看代码发现,当004126AC 这里的EAX==ED3E的时候,这个跳转才能实现。如果不跳就出错。
      004126A6    E8 F9130000          call 修改图标.00413AA4
      004126AC    3D 3EED0000          cmp eax,0ED3E
      004126B1    74 44                je short 修改图标.004126F7
      
      我们在004126A6 下断点。重新来过。中断后在这里004126A6后,我们F8,中断在我们第二次打补丁的地方。F8单步走。
      004506CA   /E9 2EA20F00          jmp 修改图标.0054A8FD
      004506CF   |5D                   pop ebp
      004506D0   |C3                   retn
      ————————————————————————————————————
      当程序走到00413B84的时候,我们看eax的值是6770,edx的值是6770
      00413B7C    E8 03CB0300          call 修改图标.00450684
      00413B81    83C4 0C              add esp,0C
      00413B84    0FB7F8               movzx edi,ax                        ; 这里大家很熟悉吧
      00413B87    56                   push esi
      00413B88    E8 C3291100          call 修改图标.00526550
      ————————————————————————————————————
      
      通过上面的分析,我们该找的给edi赋值的地方。向上看汇编代码。发现:
      EAX==EDX==6770,应该在此打补丁,让他们的值为,0ED3E
      
      
                
      
      找零区
      0054A928    0000                 add byte ptr ds:[eax],al            ;零区
      
      ===============补丁代码==============
      add    esp,0C
      mov    eax,0ED3E
      mov    edx,eax
      movzx  edi,ax
      jmp    00413B87
      =====================================
      
      
      ————————————————————————————————————
      00413B81    83C4 0C              add esp,0C
      00413B84    0FB7F8               movzx edi,ax                        ; 这里大家很熟悉吧
      00413B87    56                   push esi
      
      修改为:
      00413B81   /E9 A26D1300          jmp 修改图标.0054A928
      00413B86   |90                   nop
      00413B87   |56                   push esi
      ————————————————————————————————————
      
      
      代码修改完毕,我们来保存一下。复制所有修改。保存为“修改图标-DIY-2.exe”关闭Ollydbg。
      
      运行 修改图标-DIY-2.exe ,oh my god! 终于看到我们熟悉的界面了。程序运行了。我们试录一个视频。看看你。哇!果然变成了修改的图标
      
      了。真高兴。呵呵。山重水复疑无路,柳暗花明又一村!
      
      
      修改了这么多。我还想要在山寨一下,现在不都是流行山寨版本的吗!
      
      我们知道,在录像播放的时候有一个 控制窗体,我们在控制窗体上面做点手脚吧!
      把自己的名字写上去。让每个看视频的人都能看见。
      
      
      
      说干就干
      
      先吧Play.dat修改为Play.exe,用Restorator载入Play.exe 点开rcdate前面的“+”在这个'TCONTROLFORM'资源里面,我们看见了“控制”这
      
      个就是在播放视频时候的控制窗体的标题。我们按键盘上面的F6,修改成“看雪论坛专用录像工具”保存。
      
      再把Play.exe 修改为 Play.dat
      
      好了,测试一下,perfect!自我感觉很好。
      
      就说到这里吧。
      
      
      
    --------------------------------------------------------------------------------
    【经验总结】
      处理自校验的地方值得大家学习一下,尤其是第二次修改的那个自校验,我们修改成固定的值了。但是后面还有对这个值的
      多次校验。需要我们每次模拟正确的值来打补丁。其他的没什么技术含量了。主要是定位我们要修改的内容在那个文件。
      
    --------------------------------------------------------------------------------
    【版权声明】: 看雪论坛首发,转载请注明作者并保持文章的完整, 谢谢!


                                                           2009年08月06日 0:00:38
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-8-6 01:05:10 | 显示全部楼层
    呵呵,好文啊,漏网之鱼挺猛的啊
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-8-6 10:35:50 | 显示全部楼层
    楼主水平真高,好好学习一下。
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-3-20 20:06
  • 签到天数: 258 天

    [LV.8]以坛为家I

    发表于 2009-8-7 20:39:42 | 显示全部楼层
    楼主ID好像有不同的吧
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-8-7 21:28:15 | 显示全部楼层
    是的 还有更简单的方法 不修改程序自身 /:001
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2009-8-8 15:37:46 | 显示全部楼层
    真的是非常之麻烦啊。这个软件
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2021-4-10 23:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-8-10 00:25:27 | 显示全部楼层
    原帖由 Nisy 于 2009-8-7 21:28 发表
    是的 还有更简单的方法 不修改程序自身 /:001




    呵呵,麻烦大侠指点迷津,如何做才能不修改程序?:loveliness:
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-12-17 18:40
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-8-10 10:01:27 | 显示全部楼层
    简单的办法谁有,也给俺看看/:017
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-12-11 16:55
  • 签到天数: 504 天

    [LV.9]以坛为家II

    发表于 2009-8-31 08:28:48 | 显示全部楼层
    这个比较经典。谢谢楼主的详细教程。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-9-11 12:49:50 | 显示全部楼层
    终于看完老。思路很清晰啊,录像大师的每个版本都差不多?
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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