首页
论坛
课程
招聘
[原创]自己第一次写的一个CM.
2009-6-20 20:17 6936

[原创]自己第一次写的一个CM.

2009-6-20 20:17
6936
【原创】自己第一次写的一个CM.

开始用VC写的。没用MFC.但是可恶的2008空项目都要net支持。不知道怎么想的。
无奈之下改用Masm32.。基本上你反汇编的就是源代码。

无壳.无保护.无VM。个人感觉难度适中.

例子序列号:

Yangs

JZs[CXdEZca[WBEXa5CQ

-----
第一个作品希望大家支持。
过几天附上C和asm的源代码。

【公告】看雪团队招聘安全工程师,将兴趣和工作融合在一起!看雪20年安全圈的口碑,助你快速成长!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (19)
雪    币: 313
活跃值: 活跃值 (18)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
keheng 活跃值 1 2009-6-21 08:38
2
0

00401406 > \E8 3AFFFFFF call 00401345 ;计算用户名
0040140B . E8 78FDFFFF call 00401188 ;计算注册码 跟进查看到下面的代码
00401410 . 6A 00 push 0 ; /pThreadId = NULL
00401412 . 6A 00 push 0 ; |CreationFlags = 0
00401414 . 6A 00 push 0 ; |pThreadParm = NULL
00401416 . 68 00104000 push 00401000 ; |ThreadFunction = CM.00401000
0040141B . 6A 00 push 0 ; |StackSize = 0
0040141D . 6A 00 push 0 ; |pSecurity = NULL
0040141F . E8 E8020000 call <jmp.&kernel32.CreateThread> ; \CreateThread
00401424 . A3 2E304000 mov dword ptr [40302E], eax
00401429 . 6A 00 push 0 ; /pThreadId = NULL
0040142B . 6A 00 push 0 ; |CreationFlags = 0
0040142D . 6A 00 push 0 ; |pThreadParm = NULL
0040142F . 68 C4104000 push 004010C4 ; |ThreadFunction = CM.004010C4
00401434 . 6A 00 push 0 ; |StackSize = 0
00401436 . 6A 00 push 0 ; |pSecurity = NULL
00401438 . E8 CF020000 call <jmp.&kernel32.CreateThread> ; \CreateThread
0040143D . A3 32304000 mov dword ptr [403032], eax
00401442 . 6A FF push -1 ; /Timeout = INFINITE
00401444 . FF35 2E304000 push dword ptr [40302E] ; |hObject = NULL
0040144A . E8 D5020000 call <jmp.&kernel32.WaitForSingleOb>; \WaitForSingleObject
0040144F . 6A FF push -1 ; /Timeout = INFINITE
00401451 . FF35 32304000 push dword ptr [403032] ; |hObject = NULL
00401457 . E8 C8020000 call <jmp.&kernel32.WaitForSingleOb>; \WaitForSingleObject
0040145C . A1 4B304000 mov eax, dword ptr [40304B]
00401461 . 8B0D 4F304000 mov ecx, dword ptr [40304F]
00401467 . 8B15 53304000 mov edx, dword ptr [403053]
0040146D . A3 36304000 mov dword ptr [403036], eax
00401472 . 890D 3A304000 mov dword ptr [40303A], ecx
00401478 . 8915 3E304000 mov dword ptr [40303E], edx
0040147E . A1 57304000 mov eax, dword ptr [403057]
00401483 . A3 42304000 mov dword ptr [403042], eax
00401488 . A1 4B304000 mov eax, dword ptr [40304B]
0040148D . 66:8B0D 4F304>mov cx, word ptr [40304F]
00401494 . 0BC0 or eax, eax
00401496 75 25 jnz short 004014BD ;nop
00401498 66:0BC9 or cx, cx
0040149B 75 07 jnz short 004014A4 ;nop两个跳转nop后爆破。。。。。
0040149D . E8 7EFEFFFF call 00401320






计算注册码


00401188 /$ 53 push ebx
00401189 |. 57 push edi
0040118A |. 56 push esi
0040118B |. B9 00000000 mov ecx, 0
00401190 |. EB 2C jmp short 004011BE
00401192 |> 80B9 4B304000>/cmp byte ptr [ecx+40304B], 3A
00401199 |. 73 09 |jnb short 004011A4
0040119B |. 80A9 4B304000>|sub byte ptr [ecx+40304B], 30
004011A2 |. EB 19 |jmp short 004011BD
004011A4 |> 80B9 4B304000>|cmp byte ptr [ecx+40304B], 5D
004011AB |. 73 09 |jnb short 004011B6
004011AD |. 80A9 4B304000>|sub byte ptr [ecx+40304B], 37
004011B4 |. EB 07 |jmp short 004011BD
004011B6 |> 80A9 4B304000>|sub byte ptr [ecx+40304B], 3B
004011BD |> 41 |inc ecx
004011BE |> 83F9 14 cmp ecx, 14
004011C1 |.^ 72 CF \jb short 00401192
004011C3 |. B8 00000000 mov eax, 0
004011C8 |. 0205 4B304000 add al, byte ptr [40304B]
004011CE |. C1E0 06 shl eax, 6
004011D1 |. 0205 4C304000 add al, byte ptr [40304C]
004011D7 |. C1E0 06 shl eax, 6
004011DA |. 0205 4D304000 add al, byte ptr [40304D]
004011E0 |. C1E0 06 shl eax, 6
004011E3 |. 0205 4E304000 add al, byte ptr [40304E]
004011E9 |. A2 AF304000 mov byte ptr [4030AF], al
004011EE |. 8825 AE304000 mov byte ptr [4030AE], ah
004011F4 |. C1E8 10 shr eax, 10
004011F7 |. A2 AD304000 mov byte ptr [4030AD], al
004011FC |. B8 00000000 mov eax, 0
00401201 |. 0205 4F304000 add al, byte ptr [40304F]
00401207 |. C1E0 06 shl eax, 6
0040120A |. 0205 50304000 add al, byte ptr [403050]
00401210 |. C1E0 06 shl eax, 6
00401213 |. 0205 51304000 add al, byte ptr [403051]
00401219 |. C1E0 06 shl eax, 6
0040121C |. 0205 52304000 add al, byte ptr [403052]
00401222 |. A2 B2304000 mov byte ptr [4030B2], al
00401227 |. 8825 B1304000 mov byte ptr [4030B1], ah
0040122D |. C1E8 10 shr eax, 10
00401230 |. A2 B0304000 mov byte ptr [4030B0], al
00401235 |. B8 00000000 mov eax, 0
0040123A |. 0205 53304000 add al, byte ptr [403053]
00401240 |. C1E0 06 shl eax, 6
00401243 |. 0205 54304000 add al, byte ptr [403054]
00401249 |. C1E0 06 shl eax, 6
0040124C |. 0205 55304000 add al, byte ptr [403055]
00401252 |. C1E0 06 shl eax, 6
00401255 |. 0205 56304000 add al, byte ptr [403056]
0040125B |. A2 B5304000 mov byte ptr [4030B5], al
00401260 |. 8825 B4304000 mov byte ptr [4030B4], ah
00401266 |. C1E8 10 shr eax, 10
00401269 |. A2 B3304000 mov byte ptr [4030B3], al
0040126E |. B8 00000000 mov eax, 0
00401273 |. 0205 57304000 add al, byte ptr [403057]
00401279 |. C1E0 06 shl eax, 6
0040127C |. 0205 58304000 add al, byte ptr [403058]
00401282 |. C1E0 06 shl eax, 6
00401285 |. 0205 59304000 add al, byte ptr [403059]
0040128B |. C1E0 06 shl eax, 6
0040128E |. 0205 5A304000 add al, byte ptr [40305A]
00401294 |. A2 B8304000 mov byte ptr [4030B8], al
00401299 |. 8825 B7304000 mov byte ptr [4030B7], ah
0040129F |. C1E8 10 shr eax, 10
004012A2 |. A2 B6304000 mov byte ptr [4030B6], al
004012A7 |. B8 00000000 mov eax, 0
004012AC |. 0205 5B304000 add al, byte ptr [40305B]
004012B2 |. C1E0 06 shl eax, 6
004012B5 |. 0205 5C304000 add al, byte ptr [40305C]
004012BB |. C1E0 06 shl eax, 6
004012BE |. 0205 5D304000 add al, byte ptr [40305D]
004012C4 |. C1E0 06 shl eax, 6
004012C7 |. 0205 5E304000 add al, byte ptr [40305E]
004012CD |. A2 BB304000 mov byte ptr [4030BB], al
004012D2 |. 8825 BA304000 mov byte ptr [4030BA], ah
004012D8 |. C1E8 10 shr eax, 10
004012DB |. A2 B9304000 mov byte ptr [4030B9], al
004012E0 |. B9 00000000 mov ecx, 0
004012E5 |. EB 0D jmp short 004012F4
004012E7 |> 8A81 AD304000 /mov al, byte ptr [ecx+4030AD] ;转移注册码,循环出注册码
004012ED |. 8881 4B304000 |mov byte ptr [ecx+40304B], al
004012F3 |. 41 |inc ecx
004012F4 |> 83F9 10 cmp ecx, 10
004012F7 |.^ 72 EE \jb short 004012E7
004012F9 |. C605 5A304000>mov byte ptr [40305A], 0
00401300 |. C605 5B304000>mov byte ptr [40305B], 0
00401307 |. C605 5C304000>mov byte ptr [40305C], 0
0040130E |. C605 5D304000>mov byte ptr [40305D], 0
00401315 |. C605 5E304000>mov byte ptr [40305E], 0
0040131C |. 5E pop esi
0040131D |. 5F pop edi
0040131E |. 5B pop ebx
0040131F \. C3 retn





得出的asc 应该就是注册码
4D 20 C4 14 61 C8 24 34 D0 4D 34 D0 4D 34 D0
雪    币: 297
活跃值: 活跃值 (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
pyq逍遥 活跃值 1 2009-6-21 09:13
3
0
分析的不错,学习中
雪    币: 201
能力值: (RANK:130 )
在线值:
发帖
回帖
粉丝
hefei2 活跃值 3 2009-6-21 09:38
4
0
2008可以编写纯c++的程序,不需要.net的支持。
雪    币: 143
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Yangs 活跃值 2009-6-21 12:50
5
0
keheng用静态分析的吧。爆的地方对。但有点小手脚,爆了是乱码。

算序列号的地方不对。那个函数是序列号初始化而已。把字符串数据转成内存数据(字符串以外的)。类似base64.
雪    币: 143
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Yangs 活跃值 2009-6-21 12:53
6
0
我试了好几次都不行。请教一下如何设置啊?
我用跟踪了一下。好像08给程序加的入口函数。就是main函数之前初始化的那段代码调用的是msvcr90.dll的函数.但是我把msvcr90.dll拷贝到目标机器还是不行。可能msvcr90.dll的初始化代码要net支持.好象是.
雪    币: 1481
活跃值: 活跃值 (129)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
cntrump 活跃值 13 2009-6-21 13:14
7
0
vs也可以写纯SDK的,不用.net
雪    币: 143
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Yangs 活跃值 2009-6-21 13:25
8
0
vs2008?
怎么设置啊。我建的一个空项目 一个空main.出来的exe拿到没装net的xp机器上就运行不了.vista可以(自带net).

我换一个版问吧。跑题了。呵呵
雪    币: 1481
活跃值: 活跃值 (129)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
cntrump 活跃值 13 2009-6-21 13:40
9
0
菜单上 项目 -> xx属性 -> 配置属性 -> c/c++ -> 代码生成 -> 运行时库 选 多线程(/MT)或者 多线程调试(/MTd)这样就可以脱离VS 2008的运行库了
雪    币: 143
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Yangs 活跃值 2009-6-21 13:55
10
0
成了!十分感谢!网上找了好久都没找到方法.
雪    币: 229
活跃值: 活跃值 (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hymm2003 活跃值 2009-6-21 15:09
11
0
学习一下。
雪    币: 201
能力值: (RANK:130 )
在线值:
发帖
回帖
粉丝
hefei2 活跃值 3 2009-6-22 10:20
12
0
不好意思,今天才看见,就用9楼的方法就行了。如果用了mfc还需要将mfc改为静态链接。
雪    币: 449
活跃值: 活跃值 (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
einyboy 活跃值 2009-6-22 12:00
13
0
搞定了。不错啊
雪    币: 143
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Yangs 活跃值 2009-6-22 14:40
14
0
有人看出算法了没?
雪    币: 449
活跃值: 活跃值 (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
einyboy 活跃值 2009-6-22 16:40
15
0
这个东西是通过信号量,在线程里计算注册码的。
雪    币: 1481
活跃值: 活跃值 (129)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
cntrump 活跃值 13 2009-6-22 19:53
16
0
实在是愚钝,只能用IDA的F5了,太坏了。。贴出来实在是找BS。。。。。
雪    币: 88
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
jingru 活跃值 2009-6-22 20:05
17
0
绕来绕去的..好像断在getdlgtext上会无限wait ..
雪    币: 2025
活跃值: 活跃值 (25)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2009-6-22 20:39
18
0
sessiondiy
6ZOQ6YsYSsCi
雪    币: 143
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Yangs 活跃值 2009-6-22 20:39
19
0
没错.算法算法算法啊。呵呵。有点并行运算的影子.
雪    币: 143
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Yangs 活跃值 2009-6-22 20:40
20
0
5555555
被看出来的.
游客
登录 | 注册 方可回帖
返回