好友
阅读权限 10
听众
最后登录 1970-1-1
【文章标题】: DIY个人专版屏幕录像大师
【文章作者】: 漏网之鱼
【作者邮箱】: lwzy-crack@163.com
【作者主页】: 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日 19:56:24
免费评分
查看全部评分