首页
社区
课程
招聘
[旧帖] [求助]如何完全去除软件功能限制? 0.00雪花
发表于: 2007-5-14 22:30 13049

[旧帖] [求助]如何完全去除软件功能限制? 0.00雪花

2007-5-14 22:30
13049
本人有一 图片转为字符画的外国软件flashcii(无加壳).
下载地址:http://www.flashcii.com/flashcii_main/public_releases/download.php?file_name=flashcii_009200_setup.exe它的最特别的功能是可以输出为swf.但是未注册用户不能使用该功能。只能输出为txt.
因为此软件比较特殊,网上没有注册码分享.所以偶尝试破解试试.

首先,打开软件,注册,User输入 kitor, key输入78787878,
注册窗口消失,并无注册失败的信息.看来只有注册码正确,才会显示注册成功窗口.
用OllyICE载入,找到注册成功信息.向上看,把跳转改为跳到注册成功.
重新打开flashcii,注册,成功!慢点,高兴太早了,输出swf功能还是限制!
郁闷!原来软件会把注册成功信息写到
[HKEY_CURRENT_USER\Software\Downlode\Flashcii\User Details]
"userName"="kitor"
"userKey"=""
所以会显示已注册给kitor.但key错误,功能依然限制.
本人汇编不懂(只会改跳转,惭愧),所以不会看算法从而追出key来. 看来此路不通.没辙,另寻它法.

直接去除功能限制.
用OllyICE载入flashcii,查找"Exporting to SWF"

0045D140   > \6A FF         push    -1
0045D142   .  68 F7745300   push    005374F7                         ;  SE 处理程序安装
0045D147   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
0045D14D   .  50            push    eax
0045D14E   .  64:8925 00000>mov     dword ptr fs:[0], esp
0045D155   .  81EC FC000000 sub     esp, 0FC
0045D15B   .  53            push    ebx
0045D15C   .  56            push    esi
0045D15D   .  8BF1          mov     esi, ecx
0045D15F   .  8B86 640A0000 mov     eax, dword ptr [esi+A64]
0045D165   .  57            push    edi
0045D166   .  51            push    ecx
0045D167   .  05 18020000   add     eax, 218
0045D16C   .  8BCC          mov     ecx, esp
0045D16E   .  896424 14     mov     dword ptr [esp+14], esp
0045D172   .  50            push    eax
0045D173   .  FF15 7C4B5900 call    dword ptr [<&MFC71.#297>]        ;  MFC71.7C14E575
0045D179   .  8B96 640A0000 mov     edx, dword ptr [esi+A64]
0045D17F   .  51            push    ecx
0045D180   .  81C2 1C020000 add     edx, 21C
0045D186   .  8BCC          mov     ecx, esp
0045D188   .  896424 14     mov     dword ptr [esp+14], esp
0045D18C   .  33DB          xor     ebx, ebx
0045D18E   .  52            push    edx
0045D18F   .  899C24 1C0100>mov     dword ptr [esp+11C], ebx
0045D196   .  FF15 7C4B5900 call    dword ptr [<&MFC71.#297>]        ;  MFC71.7C14E575
0045D19C   .  8B8E 640A0000 mov     ecx, dword ptr [esi+A64]
0045D1A2   .  83CF FF       or      edi, FFFFFFFF
0045D1A5   .  89BC24 180100>mov     dword ptr [esp+118], edi
0045D1AC   .  E8 5A74FAFF   call    0040460B
0045D1B1   .  3BC3          cmp     eax, ebx
0045D1B3      75 46         jnz     short 0045D1FB  ;把75改为74,就不会跳出讨厌信息.并且可以看到输出swf的相关设置,好兴奋,点击OK,死了,没动静.
0045D1B5   .  53            push    ebx
0045D1B6   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
0045D1BA   .  E8 2C67FAFF   call    004038EB
0045D1BF   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
0045D1C3   .  C78424 100100>mov     dword ptr [esp+110], 1
0045D1CE   .  E8 D5260B00   call    <jmp.&MFC71.#2020>
0045D1D3   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
0045D1D7   .  89BC24 100100>mov     dword ptr [esp+110], edi
0045D1DE   .  E8 5051FAFF   call    00402333
0045D1E3   .  8B8C24 080100>mov     ecx, dword ptr [esp+108]
0045D1EA   .  64:890D 00000>mov     dword ptr fs:[0], ecx
0045D1F1   .  5F            pop     edi
0045D1F2   .  5E            pop     esi
0045D1F3   .  5B            pop     ebx
0045D1F4   .  81C4 08010000 add     esp, 108
0045D1FA   .  C3            retn
0045D1FB   >  8B8E 6C010000 mov     ecx, dword ptr [esi+16C]
0045D201   .  8B89 EC0E0000 mov     ecx, dword ptr [ecx+EEC]
0045D207   .  8D4424 14     lea     eax, dword ptr [esp+14]
0045D20B   .  50            push    eax
0045D20C   .  E8 994DFAFF   call    00401FAA
0045D211   .  8B10          mov     edx, dword ptr [eax]
0045D213   .  8996 54090000 mov     dword ptr [esi+954], edx
0045D219   .  8B40 04       mov     eax, dword ptr [eax+4]
0045D21C   .  8B96 6C050000 mov     edx, dword ptr [esi+56C]
0045D222   .  8D8E 6C050000 lea     ecx, dword ptr [esi+56C]
0045D228   .  8986 58090000 mov     dword ptr [esi+958], eax
0045D22E   .  FF92 48010000 call    dword ptr [edx+148]
0045D234   .  83F8 01       cmp     eax, 1
0045D237      0F85 B3000000 jnz     0045D2F0
0045D23D      8986 38090000 mov     dword ptr [esi+938], eax
0045D243   .  8B86 700A0000 mov     eax, dword ptr [esi+A70]
0045D249   .  50            push    eax                              ; /hEvent
0045D24A   .  FF15 EC3E5900 call    dword ptr [<&KERNEL32.ResetEvent>; \ResetEvent
0045D250   .  6A 14         push    14
0045D252   .  E8 35220B00   call    <jmp.&MFC71.#762>
0045D257   .  8B8E 640A0000 mov     ecx, dword ptr [esi+A64]
0045D25D   .  83C4 04       add     esp, 4
0045D260   .  53            push    ebx
0045D261   .  6A 04         push    4
0045D263   .  53            push    ebx
0045D264   .  53            push    ebx
0045D265   .  50            push    eax
0045D266   .  8D96 6C0A0000 lea     edx, dword ptr [esi+A6C]
0045D26C   .  68 B0DC4400   push    0044DCB0
0045D271   .  8908          mov     dword ptr [eax], ecx
0045D273   .  8958 04       mov     dword ptr [eax+4], ebx
0045D276   .  8970 08       mov     dword ptr [eax+8], esi
0045D279   .  8950 0C       mov     dword ptr [eax+C], edx
0045D27C   .  8958 10       mov     dword ptr [eax+10], ebx
0045D27F   .  E8 D0280B00   call    <jmp.&MFC71.#1024>
0045D284   .  6A 02         push    2                                ; /Options = DUPLICATE_SAME_ACCESS
0045D286   .  53            push    ebx                              ; |Inheritable
0045D287   .  8BF8          mov     edi, eax                         ; |
0045D289   .  53            push    ebx                              ; |Access
0045D28A   .  8B1D 003F5900 mov     ebx, dword ptr [<&KERNEL32.GetCu>; |kernel32.GetCurrentProcess
0045D290   .  8D86 680A0000 lea     eax, dword ptr [esi+A68]         ; |
0045D296   .  50            push    eax                              ; |phTarget
0045D297   .  FFD3          call    ebx                              ; |[GetCurrentProcess
0045D299   .  8B4F 2C       mov     ecx, dword ptr [edi+2C]          ; |
0045D29C   .  50            push    eax                              ; |hTargetProcess
0045D29D   .  51            push    ecx                              ; |hSource
0045D29E   .  FFD3          call    ebx                              ; |[GetCurrentProcess
0045D2A0   .  50            push    eax                              ; |hSourceProcess
0045D2A1   .  FF15 FC3E5900 call    dword ptr [<&KERNEL32.DuplicateH>; \DuplicateHandle
0045D2A7   .  8B57 2C       mov     edx, dword ptr [edi+2C]
0045D2AA   .  52            push    edx                              ; /hThread
0045D2AB   .  FF15 E43E5900 call    dword ptr [<&KERNEL32.ResumeThre>; \ResumeThread
0045D2B1   .  8B8E 640A0000 mov     ecx, dword ptr [esi+A64]
0045D2B7   .  68 44585400   push    00545844                         ;  ASCII "Exporting to SWF..."
0045D2BC   .  81C1 EC020000 add     ecx, 2EC
0045D2C2   .  FF15 18405900 call    dword ptr [<&MFC71.#784>]        ;  MFC71.7C14FF74
0045D2C8   .  8B86 640A0000 mov     eax, dword ptr [esi+A64]
0045D2CE   .  C780 94020000>mov     dword ptr [eax+294], 1
0045D2D8   .  8B86 640A0000 mov     eax, dword ptr [esi+A64]
0045D2DE   .  8B90 20020000 mov     edx, dword ptr [eax+220]
0045D2E4   .  8D88 20020000 lea     ecx, dword ptr [eax+220]
0045D2EA   .  FF92 48010000 call    dword ptr [edx+148]
0045D2F0   >  8B86 6C010000 mov     eax, dword ptr [esi+16C]
0045D2F6   .  8B88 EC0E0000 mov     ecx, dword ptr [eax+EEC]
0045D2FC   .  E8 C06CFAFF   call    00403FC1
0045D301   .  8B8E D8090000 mov     ecx, dword ptr [esi+9D8]
0045D307   .  8B96 6C010000 mov     edx, dword ptr [esi+16C]
0045D30D   .  51            push    ecx
0045D30E   .  8B8A E80E0000 mov     ecx, dword ptr [edx+EE8]
0045D314   .  6A 01         push    1
0045D316   .  E8 5E5FFAFF   call    00403279
0045D31B   .  8B86 D8090000 mov     eax, dword ptr [esi+9D8]
0045D321   .  8B8E 6C010000 mov     ecx, dword ptr [esi+16C]
0045D327   .  8B89 E80E0000 mov     ecx, dword ptr [ecx+EE8]
0045D32D   .  50            push    eax
0045D32E   .  6A 01         push    1
0045D330   .  E8 1877FAFF   call    00404A4D
0045D335   .  8B8C24 080100>mov     ecx, dword ptr [esp+108]
0045D33C   .  5F            pop     edi
0045D33D   .  5E            pop     esi
0045D33E   .  64:890D 00000>mov     dword ptr fs:[0], ecx
0045D345   .  5B            pop     ebx
0045D346   .  81C4 08010000 add     esp, 108
0045D34C   .  C3            retn

0045D1B3      75 46         jnz     short 0045D1FB
;把75改为74,就不会跳出如图的讨厌信息.并且可以看到输出swf的相关设置,好兴奋,点击OK,死了,没动静.

我,我...真的没辙了,实在是没办法了,
特上论坛寻求帮助!请问如何完全去掉功能限制? 难道真的要算出key才行.我不会汇编啊!

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 200
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
厉害啊,有门道。现在mark一下,顺便帮你顶上去~
2007-5-14 23:26
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
外国的,都试试
2007-5-15 12:32
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
你这样改看看怎么样

0047C7B2   .  E8 547EF8FF   call    0040460B
0047C7B7   .  85C0          test    eax, eax
0047C7B9   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
0047C7BD   .  6A 00         push    0
0047C7BF      74 3B         je      short 0047C7FC                   ;  改这地方
0047C7C1   .  E8 9E7FF8FF   call    00404764
0047C7C6   .  8D4424 0C     lea     eax, dword ptr [esp+C]
0047C7CA   .  50            push    eax

0047C856   .  E8 B07DF8FF   call    0040460B
0047C85B   .  85C0          test    eax, eax
0047C85D      0F84 84000000 je      0047C8E7                    ;  再改这地方
0047C863   .  E8 2A2C0900   call    <jmp.&MFC71.#1084>
0047C868   .  8B78 04       mov     edi, dword ptr [eax+4]
0047C86B   .  8D8C24 900000>lea     ecx, dword ptr [esp+90]

你说的功能转换没有试,行了的话说一声
2007-5-15 14:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
先谢谢 河边渔者 你说的两个地方 我先前也曾试过了。作用如下:

0047C7BF      74 3B         je      short 0047C7FC
74改为75,点击注册后,即显示This copy of Flashcii is registered to : 。但没用,功能依然受限。

0047C85D      0F84 84000000 je      0047C8E7   
84改为85, 点击注册后,会弹出注册窗口,任意输入(或不输入)点OK,
即显示Registration Successful!Thank you supporting the development of Flashcii.
但也是没用!功能依然限制。我猜想该功能模块里面依然有检测机制(可是该算法藏在哪儿呢?我找不到,找到就可以破解了)。
2007-5-15 20:12
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
昨晚试了试,果然不简单,关键在这儿

0047C7B2   .  E8 547EF8FF   call    0040460B   关键算法

这个call的调用有四个地方,我把相应的地方都改了,但也发现功能仍然受限制

看来不研究这个call是不行的,算法不难,但没时间仔细研究(昨晚弄到很晚,坐电脑旁快睡着了)

你追追这个call试试
2007-5-16 08:48
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看了一下,OD载入

ctrl+G  到 0047BBE5

将je改为jne 或者jmp

保存,完工.完美爆破.

算法分析中....因为有个

0047BB2E   .  FF15 BC425900    call    [<&MFC71.#865_ATL::CSimpleStringT<char,1>::operator[]>]  ;  MFC71.7C1894E7

我不知道是什么意思.百度未果..哪位大虾告诉我一下..我也分析个算法混个精嘛.
2007-5-16 11:50
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
试过了,报错,说什么内存不能为“read”啥的

改jne和jmp都不行
2007-5-16 12:29
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
忘了告诉你.因为这个软件有重启验证,所以要先把注册表项导进去.

我上传上来了,你解压导入注册表,然后再改跳转就行了.我有空的时候再把算法整上来.

奇了怪了,我这里改了没有说内存错误..只要把注册表项导进去了就行了.
上传的附件:
2007-5-16 13:04
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
奇了怪了!

1. 注册表项导不进去,机子不让导

2. 无什么无什么兄说的重启验证我知道,不改跳转,不写注册表项,改了关键跳转后,注册表里就有了用户名和伪码

3. 仍然不行:或者报错,或者报另一种错,或者出现像是在保存为swf文件,然后就一直不动

4. 注册码应该为28位

5. 在0047BBC4 处出现 42 30 1e 22 20 34 8b cf d9 38 c0 14 10 68 e4 fa dc ff ef 97

这是固有的,还有53 62 D9 65 03 00 39 E7 D4 41 CA 60 22 46 53 46 D9 EF E9 82这显然是根据

伪码算出的,比较两者,不等就完蛋

6. 上面这一步想让它相等,可我不会

7. 有哪位高人想指点一下的话,请一定要详细一些,因为我很菜

8. 我是菜鸟我怕谁
2007-5-16 15:11
0
雪    币: 296
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
11
应该是固定字符串,ue32里面搜一下改成你要的看看
2007-5-16 23:17
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不是固定字符串

假注册码要求必须是28位,用我的办法才能爆破.
2007-5-17 11:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习,新手学习!
2007-5-17 11:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
注册表导不进去

我用自己的注册信息,再改0047BBE5 这里 提示成功
但在输出swf窗口里一点ok,软件立刻关闭。

郁闷中。。。
2007-5-17 12:31
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
再问一下无什么无什么兄,你的爆破后能存为SWF文件吗?

另外用Winter-Night兄的方法改了以后,用OD打开还是42 30 1e 22 20 34 8b cf d9 38

c0 14 10 68 e4 fa dc ff ef 97没有变啊

有一个call是算53 62 D9 65 03 00 39 E7 D4 41 CA 60 22 46 53 46 D9 EF E9 82的,

追了追,好家伙!有上千行。(有点夸张,反正老长……)

我估计它是把假码经过一系列复杂运算得到53 62 D9 65 03 00 39 E7 D4 41 CA 60 22 46

53 46 D9 EF E9 82再与真码的42 30 1e 22 20 34 8b cf d9 38 c0 14 10 68 e4 fa dc

ff ef 97进行逐位比较,一位不对立即失败!
2007-5-17 12:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
实在不行的话,老大能不能出来帮帮忙啊!
2007-5-17 13:31
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
研究一下,呵呵
2007-5-18 07:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
今天弄了一下,一点保存立刻弹出程序 内存不能写 之类的 问题,晕啊
河边渔者 无奈无赖 有没有 新进展啊? 拜托了!
2007-5-19 10:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
98和2k/xp的注册表文件不通用
2007-5-19 11:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
进来学习一下呵呵
2007-5-19 12:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
还是没进展 两位好兄弟,有没有进展啊。
等到头发都白了
2007-5-21 00:49
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
看看这个帖子

http://bbs1.pediy.com/showthread.php?t=44807

也许有帮助
2007-5-21 08:55
0
雪    币: 8847
活跃值: (3320)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
楼主的这次破解  让人关注
2007-5-21 15:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
我也来学习学习,虽然我的那个软件搞得我头疼,但学习应该没错吧!支持楼主!
2007-5-21 19:32
0
游客
登录 | 注册 方可回帖
返回
//