Teoria e prática de plug-ins e software crackeado

Teoria e prática de plug-ins e software crackeado

1 teoria

1.1 Arquivos executáveis ​​em diferentes sistemas operacionais

  1. Janelas【PE】

O formato PE, Portable Executable,
é o principal formato de arquivo executável no Windows. Não se confunda com o nome, os arquivos PE devem ser arquivos do Windows.

  1. Linux【ELF】

No arquivo executável do sistema Linux (arquivo ELF, formato executável e vinculável, formato de link executável), o início é um cabeçalho de arquivo, que é usado para descrever o layout do programa, os atributos de todo o arquivo e outras informações, incluindo se o arquivo é executável, link estático ou dinâmico e endereço de entrada e outras informações; o arquivo gerado não é um arquivo executável binário puro, porque o cabeçalho do programa incluído não é um código executável; depois de ler este arquivo contendo o cabeçalho do programa na memória , no cabeçalho do programa Leia o endereço de entrada e pule para o endereço de entrada para execução;

  1. Mac【Mach-O】

Mach-O é uma abreviatura para o formato de arquivo Mach Object, que é um formato de arquivo para arquivos executáveis, código de objeto, bibliotecas dinâmicas e core dumps. Como alternativa ao formato a.out, o Mach-O oferece maior escalabilidade e acesso mais rápido às informações da tabela de símbolos.

1.2 Conhecimento de cracking de software no Windows

◼ Conhecimento necessário de cracking de software da plataforma Windows
 Formato do arquivo: arquivo PE
 Linguagem assembly: x86, x64 assembly
 Ferramentas: Ollydbg
 API do Windows

◼ Teclas de atalho OD comumente usadas
F2: Alternar pontos de interrupção
F9: Executar o programa
F7: Entrar
F8: Passar por cima
Ctrl + G: Pesquisar código

1.3 Embalagem e desembalagem

  • Ideias gerais para cracking de software
    Insira a descrição da imagem aqui

  • A ideia de quebrar o software após embalá-lo (uma camada extra no software comum)
    Insira a descrição da imagem aqui

1.4 A natureza dos plug-ins

Existem dois métodos comuns de plug-in:

  • Modificar dados na memória
    Insira a descrição da imagem aqui

  • Modifique o código na memória
    Insira a descrição da imagem aqui

Modifique o código assembly por meio do software OD e salve-o como um novo arquivo .exe

其实,数据和代码并没有本质区别,在内存中都是01

Insira a descrição da imagem aqui

2 etapas práticas

Endereço do software:

链接:https://pan.baidu.com/s/1pIogCuXPR87p91og09zZZQ?pwd=zj8k 
提取码:zj8k

2.1 Preparação do ambiente

visual studio 2022: desenvolvimento de desktop c++ ​​(MFC), desenvolvimento de extensão do visual studio

Insira a descrição da imagem aqui
Desenvolvimento de extensão:
Insira a descrição da imagem aqui

2.2 Compilação OD (Ollydbg)

Converter arquivo .exe em assembly

2.4 motores trapaceiros

Usado para detectar alterações numéricas na memória

Insira a descrição da imagem aqui

2.5 Etapas gerais

Aqui está 植物大战僵尸um exemplo

  1. Abra o visual studio e crie um projeto MFC (semelhante ao swing em java)
    Insira a descrição da imagem aqui
- 自定义log宏,简化打印
- 事件注册(手动、自动)
- 绑定变量(手动、自动)
- 单选框状态读取(勾选、不勾选)
  1. Arraste o arquivo em execução (arquivo .exe) de Plants vs. Zombies para o OD e assista à compilação
  • Modificar lógica de montagem
    Insira a descrição da imagem aqui
前后修改尽量不动字节数,比如:前面一行代码占字节,我们修改后的代码占2字节,
那么我们就需要使用NOP填充,相当于是空,当cpu执行到nop时,会直接跳过,nop
只起到一个占用位置的作用

Ideia:

①秒杀僵尸:直接用僵尸的原有血量 - 僵尸的血量
②无限阳光:阳光存在一个struct中,通过地址找到值,然后使用API修改内存中的值
  • Exporte o arquivo exe crackeado
    Insira a descrição da imagem aqui
  1. Encontre janela usando spy++

O desenvolvimento de plug-in de desktop do Windows pode precisar obter o identificador (ID) do arquivo em execução e, em seguida, controlar

Insira a descrição da imagem aqui
4. Modifique o código no visual studio [parte]

Mate zumbis instantaneamente, luz solar ilimitada

// 用来监控游戏的线程
DWORD monitorThreadFunc(LPVOID lpThreadParameter) {
    
    
	while (1) {
    
    
		// 获得植物大战僵尸窗口的句柄
		HWND windowHandle = FindWindow(CString("MainWindow"), CString("植物大战僵尸中文版"));

		if (windowHandle == NULL) {
    
    
			g_dlg->m_bnKill.SetCheck(FALSE);
			g_dlg->m_bnSun.SetCheck(FALSE);
			g_dlg->m_bnKill.EnableWindow(FALSE);
			g_dlg->m_bnSun.EnableWindow(FALSE);

			g_processHandle = NULL;
		} else if (g_processHandle == NULL) {
    
    
			g_dlg->m_bnKill.EnableWindow(TRUE);
			g_dlg->m_bnSun.EnableWindow(TRUE);

			// 获得植物大战僵尸的进程ID
			DWORD processPid;
			GetWindowThreadProcessId(windowHandle, &processPid);
			// 获得植物大战僵尸的进程句柄
			g_processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processPid);
		}

		if (g_dlg->m_bnSun.GetCheck()) {
    
     // 需要无限阳光
			DWORD value = 9990;
			WriteMemory(&value, sizeof(value), 0x6A9EC0, 0x320, 0x8, 0x0, 0x8, 0x144, 0x2c, 0x5560, -1);
		}

		// 休息睡眠
		Sleep(1000);
	}
	return NULL;
}

Acho que você gosta

Origin blog.csdn.net/weixin_45565886/article/details/128769701#comments_28471683
Recomendado
Clasificación