发表于 2017-2-10 09:19

申请会员ID:雨耕山【申请通过】


1、申 请 I D:雨耕山
2、个人邮箱:km315@qq.com
3、原创技术文章,在看雪安全论坛被评为精华,地址是:http://bbs.pediy.com/showthread.php?t=140103




标 题: 屏录专家DIY
作 者: 雨耕山
时 间: 2011-09-14,11:24:37
链 接: http://bbs.pediy.com/showthread.php?t=140103

【软件大小】: 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 of PChar = ('TMainForm', 'TPageControl', 'TTabSheet', 'TPageControl', 'TTabSheet', 'TEdit');
A_szWinName: array of PChar = ('屏幕录像专家 V2011', '', '录像模式               ', '', '基本设置', '');
var
i: Integer;
hLastWin: THandle;
t: TDateTime;
begin

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

for i := 1 to 5 do
   begin
      hLastWin := FindWindowEx(hLastWin, THandle(nil), A_szClassName, A_szWinName);
   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, '/', '-', );
StrT := StringReplace(StrT, '\', '-', );
StrT := StringReplace(StrT, '*', '-', );
StrT := StringReplace(StrT, '|', '-', );
StrT := StringReplace(StrT, '?', '-', );
StrT := StringReplace(StrT, '<', '-', );
StrT := StringReplace(StrT, '>', '-', );
StrT := StringReplace(StrT, '"', '-', );
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:
004089F9   E8 22DC1600 call 00576620----------------------// 改为 call ,这是自已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:,170
00408A10 . 8D85 38FFFFFF lea eax,dword ptr ss:
00408A16 . E8 7D8FFFFF call 00401998
00408A1B . 50 push eax
00408A1C . FF85 E0FCFFFF inc dword ptr ss:
00408A22 . BA 843C5900 mov edx,00593C84 ; 已经存在,请换一个文件名
00408A27 . 8D85 3CFFFFFF lea eax,dword ptr ss:
00408A2D . E8 E6D81600 call 00576318
00408A32 . FF85 E0FCFFFF inc dword ptr ss:
00408A38 . 8D95 3CFFFFFF lea edx,dword ptr ss:
00408A3E . 52 push edx
00408A3F . 6A 00 push 0
00408A41 . 6A 00 push 0
完成改造后,我们测试一下,生成的视频文件果然是开始录像的时间,达到我的目的。



Hmily 发表于 2017-2-10 18:58

请在看雪论坛给hmilywen发一条短消息确认是本人申请本帖,谢谢。

发表于 2017-2-10 22:38



已发短消息,请查收。

jiexia 发表于 2017-2-11 20:49

不错,支持!!!!

Hmily 发表于 2017-2-12 13:36

ID:雨耕山
邮箱:km315@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

雨耕山 发表于 2017-2-14 08:03

谢谢管理人员,我来报个道!

雨耕山 发表于 2017-2-14 16:35

Hmily 发表于 2017-2-12 13:36
ID:雨耕山
邮箱:



谢谢管理人员,我来报个道,千万不要删除我的ID啊:loveliness:

protossvs 发表于 2017-2-14 20:08

赞一个信赖的优秀会员

KaQqi 发表于 2017-2-15 18:13

雨耕山 发表于 2017-2-14 16:35
谢谢管理人员,我来报个道,千万不要删除我的ID啊

我记得平路专家13好像是加壳的。这软件自效验比较简单,直接字符串就行。楼主思路是dll注入,我本来想是申请区段,取系统时间再写。想了想,两种都有利有弊。

nmsl 发表于 2017-2-15 18:36

欢迎欢迎
页: [1] 2
查看完整版本: 申请会员ID:雨耕山【申请通过】