对抗某反调试CM1

原始出处:来自 <https://bbs.pediy.com/thread-100167.htm>

[ 破文标题 ] 对抗某反调试CM

[ 破解工具 ] OD、IDA

[ 破解平台 ] Windows 7

[ 软件名称 ] KGM1Tal.exe

[ 软件大小 ] 4.00 KB

[ 软件下载 ] CM.rar

[ 保护方式 ] 无壳

[ 软件简介 ] 老外写的CM

[ 破解声明 ] 纯属兴趣,无其它目的,如有错误,望指出!

[ 破解过程 ]-------------------------------------------------------------------------------------

 

 

1、测试软件随便乱输入提示Try Again,something did not work right

 

2、直接拖进IDA查找关键字符串或则静态分析代码

 

2、1:sub_401519函数(检测401296处代码有没有被下CC断点)

 

2、2:sub_4014A9函数(检测GetDlgItemTextA首几个字节CC断点)

 

2、3:关键代码处sub_401296函数

 

2、4:sub_401332函数分析

1、第一个判断密码取值范围必须在0x41~0x5A之间(A~Z)

2、将用户名数据累加结果除以0x18将余数保存到0040304F里面

3、判断密码第二位是不是 == 0x45(E),并且检测CC断点

 

出来后还是检测CC断点的

总结函数功能:

1、判断密码的合法性

2、将用户名累加起来的结果/0x18,将余数保存到0040304F里面

3、检测0x401420、0x401296的CC断点

 

3、分析核心算法部分sub_4013B6

原始出处:来自 <https://bbs.pediy.com/thread-100167.htm> 
[ 破文标题 ] 对抗某反调试CM
[ 破解工具 ] OD、IDA
[ 破解平台 ] Windows 7
[ 软件名称 ] KGM1Tal.exe
[ 软件大小 ] 4.00 KB
[ 软件下载 ] CM.rar
[ 保护方式 ] 无壳
[ 软件简介 ] 老外写的CM
[ 破解声明 ] 纯属兴趣,无其它目的,如有错误,望指出!
[ 破解过程 ]-------------------------------------------------------------------------------------


1、测试软件随便乱输入提示Try Again,something did not work right


2、直接拖进IDA查找关键字符串或则静态分析代码


2、1:sub_401519函数(检测401296处代码有没有被下CC断点)


2、2:sub_4014A9函数(检测GetDlgItemTextA首几个字节CC断点)


2、3:关键代码处sub_401296函数


2、4:sub_401332函数分析
1、第一个判断密码取值范围必须在0x41~0x5A之间(A~Z)

2、将用户名数据累加结果除以0x18将余数保存到0040304F里面

3、判断密码第二位是不是 == 0x45(E),并且检测CC断点

出来后还是检测CC断点的

总结函数功能:
1、判断密码的合法性
2、将用户名累加起来的结果/0x18,将余数保存到0040304F里面
3、检测0x401420、0x401296的CC断点

3、分析核心算法部分sub_4013B6
提取算法:
/*
时间:10点38分
功能:
	分析某CM的注册算法
*/

#include "stdafx.h"
#include <windows.h>
#include "defs.h"                                                       //IDA宏文件来的

//为了省事定义成全局变量了
char InputName[] = { "24214214213" };		//省事直接写死了
char InputPassword[0xA] = { 0 };			//密码长度必须是10
byte Remainder = 0;			            //保存余数的

DWORD dword_40304A = 0;		//保存密码的余数
byte byte_40304E = 0;		//备份
char __stdcall sub_4013B6(char* a1)
{
	unsigned int v1=0; // eax@1
	signed int v2=0; // ebx@1
	int v3=0; // ecx@1
	int v4=0; // eax@4
	int v5=0; // eax@6
	unsigned int v6=0; // ecx@8
	char v7=0; // dh@8
	LOBYTE(v4) = Remainder;
	if (Remainder > 0x18)
	{
		LOBYTE(v4) = Remainder - 0x18;
	}
	byte_40304E = v4;
	InputPassword[0] = a1[byte_40304E];
	v4 = (unsigned __int8)v4;
	LOBYTE(v5) = Remainder + v4;
	if ((unsigned __int8)v5 > 0x18u)
		LOBYTE(v5) = v5 - 0x18;
	v6 = 2;
	InputPassword[v6] = a1[v5];
	v7 = InputPassword[v6];
	while (v6 < 8)
	{
		byte_40304E = v5;
		v5 = (unsigned __int8)v5;
		++v6;
		LOBYTE(v5) = v7 - 0x41 + v5;
		if ((unsigned __int8)v5 > 0x18u)
		{
			LOBYTE(v5) = v5 - 0x18;
		}
		InputPassword[v6]=a1[v5];
		v7 = InputPassword[v6];
	}
	unsigned int AddSum = 0;			//保存累加的结果
	for(int i=0;i<9;i++)
	{
		AddSum += InputPassword[i];
	}
	AddSum = AddSum / 0x9;
	InputPassword[9] = AddSum;
	return 0;
}
int main()
{
	//1、先将InputName数据循环累加的结果/0x18,并将余数保存起来
	byte AddSum = 0;			//保存累加的结果
	int i = 0;
	while (InputName[i] != 0)
	{
		AddSum += InputName[i];
		i++;
	}
	Remainder = AddSum % 0x18;
	InputPassword[1] = 'E';		//第二位必须是E
	char aZwatrqlcghpsxy[] = {"ZWATRQLCGHPSXYENVBJDFKMU"};
	sub_4013B6(aZwatrqlcghpsxy);
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言最近随着计算机的发展,软件日益更新,有很多公司发布的产品遭到篡改和破解,在总众多年的历史种逐渐形成了软件保护与软件破解之间的对抗产生了软件逆向工程这本门技术将在如下的课程讲解各种软件逆向知识,软件保护知识,已经破解脱壳反调试知识,为初期学软件逆向不懂而又迷茫的同学门指明一条道路此套课堂能有效帮助同学们解决软件逆向中所遇到的大部分问题大纲软件逆向工程高级班分为反调试篇汇编篇算法篇补丁篇HOOK篇将在如上这几篇对软件逆向的各个方面进行详解,包括网络验证的分析思路,封包算法的提取,以及各种软件保护技术,无论哪一篇都会从诸多个方面的细节进行详解反调试篇:分为PEB,时间校验,CRC,NtQuery函数,内核过渡等知识要领与诸多方面的综合性详解,细节分为每一节课,每一节课目标清晰无比,每一节深入精髓进行讲解!汇编篇:一个程序编译完成之后是如何通过在计算机运行起来的,其中少不了底层知识的汇编指令,汇编篇中将深入浅出的带领同学们对MASM32SDK的一套汇编库中开发程序,熟悉汇编的原理,如何运用汇编写出一套花指令,并且去除指令,方便以后的算法学习以及为今后的学习打下坚实的基础算法篇:随着编程语言的发展,编程语言的标准也在发展,一些编译器善于运用数学的手法,对程序进行各种优化,然后我们进行分析,我们得需要一步步还原这个优化或清晰了解这个优化才有可能掌握这个数学模型优化,进一步还原代码,算法篇知识要领将在优化,技巧这方面表现的玲离尽致!此篇会带领同学们分析多个语言的算法,包括C/C++算法还原代码还原易语言代码还原 算分开库的实现,制作自己的第一个注册机等!补丁篇:说到补丁,同学们可能第一个想到的就是对方一些网络验证所用到的技巧,我的课程这一方面虽有涉及,但是补丁技术远远不止这一点,我的课程会详解更多的补丁知识原理,包括什么是补丁,补丁的真正概念,前辈们是如何善用补丁对程序的漏洞进行修补损坏的程序。将在此篇一一介绍HOOK篇:详细详解了各种HOOK的原理以及实现代码,包括网上流行所说的超级HOOK,COMHOOK,协议HOOK,代理中转等方法,怎么定位关键位置,环境的保存知识要领,hook关键的注意事项,为自己以后做hook行业打下坚实的基础课程每一个细节讲究的深入骨髓,通俗易懂的学习方式,全程贯彻原理,软件逆向中必不可少少的教程!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值