首页
社区
课程
招聘
[原创]实时混淆生成的crackme
2013-7-1 13:31 9120

[原创]实时混淆生成的crackme

2013-7-1 13:31
9120
前言:

普通可执行文件生成流程

编译 -》 链接 -》 生成可执行文件

实时混淆生成

编译 -》 混淆 -》 链接 -》 生成可执行文件

混淆和链接放在服务器端完成,程序员编译完成后,把obj文件上传至服务器,当用户请求下载时,服务器实时完成代码的混淆和链接,然后把生成的可执行文件发给用户,可以实现发给用户的每个copy都不同。

用途:不知道,好玩而已

下面是一个crackme的 小演示:

vc源码(方便起见,直接在入口加了断点):
#pragma code_seg (".text$unest_9")
char str[100];
void CHelloworldDlg::OnOK() 
{
	_asm{int 3}
	extern char str[100];

    GetDlgItemText(IDC_EDIT1,str,100); 	
	unsigned int tmp = *(unsigned int *)&str;
	memset(str,0,100);
	if (tmp == 0x00333231){ //密码:123
	  ::MessageBox (0,"success","success",0);
	}
    
	//CDialog::OnOK();
}
#pragma code_seg ()


编译(vc6)后反汇编代码
00000000  57                push edi
00000001  CC                int3
00000002  6A64              push byte +0x64
00000004  6800000000        push dword 0x0
00000009  68E8030000        push dword 0x3e8
0000000E  E800000000        call dword 0x13
00000013  8B1500000000      mov edx,[dword 0x0]
00000019  B919000000        mov ecx,0x19
0000001E  33C0              xor eax,eax
00000020  BF00000000        mov edi,0x0
00000025  F3AB              rep stosd
00000027  81FA31323300      cmp edx,0x333231
0000002D  5F                pop edi
0000002E  7512              jnz 0x42
00000030  50                push eax
00000031  6800000000        push dword 0x0
00000036  6800000000        push dword 0x0
0000003B  50                push eax
0000003C  FF1500000000      call dword [dword 0x0]
00000042  C3                ret


经过实时混淆链接后的可执行文件下载:

http://www.unest.org/demo/mydemo.php

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞3
打赏
分享
最新回复 (10)
雪    币: 276
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
邓韬 9 2013-7-1 13:44
2
0
膜拜膜拜,这种办法都能想出来......
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hunxiaozi 2013-7-1 14:06
3
0
只要不是从指定的服务器上下载,就是说下载了一个,然后用这一个分享,混淆啥的就没用了
雪    币: 189
活跃值: (56)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
Osris 2 2013-7-1 14:10
4
0
这玩意的目的不是用来对抗破解的,好玩而已
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hunxiaozi 2013-7-1 14:21
5
0
嗯,不过思路还是不错的。
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
a糊涂虫 2013-7-1 16:15
6
0
昨天晚上睡不着,我也冒出了一个类似的想法,把软件提供服务的核心算法部分和校验合法用户的算法部分,捆绑放到分布式COM中,定期更新,这样即使上一次软件破解了,下一次组件更新以后,就需要重新破解,因为COM组件具有运行时卸载和替换的能力,这样不至于更新组件时,导致用户程序重新启动,当然只是想法,欢迎探讨,勿喷
雪    币: 189
活跃值: (56)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
Osris 2 2013-7-3 14:06
7
0
嗯 。。。这个不是一回事
雪    币: 110
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sjm 2014-10-4 15:54
8
0
不行,下载运行demo.exe出错,异常(0x80000003)位置 0x00401fdc

winxp sp3
雪    币: 101
活跃值: (43)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
逍遥冷月 1 2014-10-5 06:29
9
0
你确定不是那个自带的int3么
雪    币: 101
活跃值: (43)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
逍遥冷月 1 2014-10-5 06:31
10
0
123
------------------------
最近也在研究类似的东西,实时混淆的想法很给力,不过混淆强度不是很足的感觉。
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rqqeq 2014-10-5 10:57
11
0
目测拿来反挂和很屌。。。
游客
登录 | 注册 方可回帖
返回