首页
社区
课程
招聘
屏录专家DIY
发表于: 2011-9-14 11:24 10574

屏录专家DIY

2011-9-14 11:24
10574

【软件大小】: 2.34M
【下载地址】: 自己搜索下载
【加壳方式】: 无壳
【保护方式】: 注册码
【编写语言】: Borland C++ 1999
【使用工具】: PEID,OD,LordPE
【软件介绍】: 录制电脑屏幕、声音
【作者声明】: 只谈技术,共同提高,欢迎批评指正

在使用屏幕录像专家过程中,发现录制的视频默认的的文件名是“录像1、2、3”,而我需要的是按录像开始时间命名的文件, 遂对“屏录专家”进行了改造。

一、查壳:用PEID查了一下屏录专家的主文件,无壳,省了点事。

二、去自校验:随便改了一下文件的资源,运行后提示文件被破坏,这显然是文件有校验,这里不给出详细去校验的过程,只给出怎么修改。自校验修改针对屏幕录像专家V2011 Build0726版本。


三、改造思路:为使视频文件用开始录制的时间命名,只要在开始录制时,能在如图红圈所示的地方自动写入当前电脑日期时间即可,为减小劳动量,我用delphi xe写了一个dll,在合适的地方调用dll即可。

四、dll的编写:
具体代码如下:
library SetTime;

uses
ShareMem, SysUtils, Windows, Messages, Classes;
function GetHwnd: THandle;
const
A_szClassName: array [0 .. 5] of PChar = ('TMainForm', 'TPageControl', 'TTabSheet', 'TPageControl', 'TTabSheet', 'TEdit');
A_szWinName: array [0 .. 5] of PChar = ('屏幕录像专家 V2011', '', '录像模式               ', '', '基本设置', '');
var
i: Integer;
hLastWin: THandle;
t: TDateTime;
begin

hLastWin := FindWindow(A_szClassName[0], A_szWinName[0]); // 先取顶级父窗口句柄

for i := 1 to 5 do
   begin
      hLastWin := FindWindowEx(hLastWin, THandle(nil), A_szClassName[i], A_szWinName[i]);
   end;
hLastWin := GetWindow(hLastWin, 2);
Result := hLastWin;
end;

procedure MySetTime;stdcall;
var
txtHwnd: THandle;
t: TDateTime;
StrT: String;
begin
txtHwnd := GetHwnd;
t := Now;
StrT := DateTimeToStr(t);
StrT := StringReplace(StrT, ':', '时', []);//替换不能做文件名的几个字符串(下同)
StrT := StringReplace(StrT, ':', '分', []);

StrT := StringReplace(StrT, '/', '-', [rfReplaceAll, rfIgnoreCase]);
StrT := StringReplace(StrT, '\', '-', [rfReplaceAll, rfIgnoreCase]);
StrT := StringReplace(StrT, '*', '-', [rfReplaceAll, rfIgnoreCase]);
StrT := StringReplace(StrT, '|', '-', [rfReplaceAll, rfIgnoreCase]);
StrT := StringReplace(StrT, '?', '-', [rfReplaceAll, rfIgnoreCase]);
StrT := StringReplace(StrT, '<', '-', [rfReplaceAll, rfIgnoreCase]);
StrT := StringReplace(StrT, '>', '-', [rfReplaceAll, rfIgnoreCase]);
StrT := StringReplace(StrT, '"', '-', [rfReplaceAll, rfIgnoreCase]);
StrT := StringReplace(StrT, ' ', '(', []);
StrT := StrT + '秒)';
SendMessage(txtHwnd, WM_SETTEXT, 0, LParam(StrT));
end;

exports
MySetTime;
{$R *.res}

begin

end.
五、主文件输入表用添加自己的dll:
我用的是LordPE(用 PEditor 1.7会出错,不知为何),如下图所示,很详细,目的就是让新手看完本文后可以独立完成改造。

六、在文件中调用dll中的函数(过程):
     完成以上所有工作以后,就可以用OD来调试了,用OD加载目标文件运行后,在如图所示的文件名的文本框中填入不能用来做文件名的字符串(我填的是“<>”),点击录像后提示“文件已经存在,换一个文件名。”这不是已存在的问题,是Windows不允许“<>”作为文件名。

     根据提示,很容易来到下面的位置:
004089F3 . FF8D E0FCFFFF dec dword ptr ss:[ebp-320]
004089F9   E8 22DC1600 call 00576620----------------------// 改为 call [686018],这是自已dll中的函数地址,在用LordPE添加函数引用时可以看到。
004089FE   59 pop ecx-------------------------------------// NOP
004089FF   84C9 test cl,cl--------------------------------// NOP
00408A01   0F84 13010000 je 00408B1A
00408A07 . 66:C785 D4FCFFFF 70>mov word ptr ss:[ebp-32C],170
00408A10 . 8D85 38FFFFFF lea eax,dword ptr ss:[ebp-C8]
00408A16 . E8 7D8FFFFF call 00401998
00408A1B . 50 push eax
00408A1C . FF85 E0FCFFFF inc dword ptr ss:[ebp-320]
00408A22 . BA 843C5900 mov edx,00593C84 ; 已经存在,请换一个文件名
00408A27 . 8D85 3CFFFFFF lea eax,dword ptr ss:[ebp-C4]
00408A2D . E8 E6D81600 call 00576318
00408A32 . FF85 E0FCFFFF inc dword ptr ss:[ebp-320]
00408A38 . 8D95 3CFFFFFF lea edx,dword ptr ss:[ebp-C4]
00408A3E . 52 push edx
00408A3F . 6A 00 push 0
00408A41 . 6A 00 push 0
完成改造后,我们测试一下,生成的视频文件果然是开始录像的时间,达到我的目的。
附件中是用到的dll下和本文。
plzjDiy.rar


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (10)
雪    币: 8826
活跃值: (3063)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己动手,丰衣足食。
2011-9-14 14:13
0
雪    币: 59
活跃值: (1481)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵,精品文章,不错
2011-9-14 17:05
0
雪    币: 234
活跃值: (1659)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
4
支持一下,写的不错
2011-9-15 08:46
0
雪    币: 223
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
很有创意,以后玩EXE又有新的思路
2011-9-16 14:44
0
雪    币: 421
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
很有心意,感谢分享。
2011-9-22 13:50
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
留脚印 备学
2011-9-25 08:18
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好,厉害,收藏学习
2011-10-6 14:54
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
这个方法是可取的,学习。
貌似这个软件最让人头疼的地方是如何破解其注册机制。
2011-10-6 20:24
0
雪    币: 112
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
厉害。。学习。。
2011-10-8 09:20
0
雪    币: 407
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
顶  感谢分享   学习了
2011-10-8 09:56
0
游客
登录 | 注册 方可回帖
返回
//