首页
社区
课程
招聘
[分享]flashget v1.65 简单算法和注册机编写
发表于: 2005-2-9 22:16 7538

[分享]flashget v1.65 简单算法和注册机编写

2005-2-9 22:16
7538

昨天下午刚接上网,然后就是疯狂的下载东西,先下了flashget v1.65, 未注册有广告的,竟敢占用我花了几个月时间才磨来的宽带!顺手破了它


无意间发现它算法简单,考虑到以后经常用的,就想写出注册机来;


它是重启效验,注册码正确就去除广告条,不过输入注册码后会弹出MessageBox让你重启,在这儿跟一下就发现存放注册信息的键值叫“RegName”保存在“HKEY_CURRENT_USER\Software\JetCar\JetCar\General”里,下面是算法部分。


有错误的地方还请大家指出!谢谢!!



0041DC80   /$  6A FF             push -1


0041DC82   |.  68 20334F00       push flashget.004F3320                  ;  SE handler installation


0041DC87   |.  64:A1 00000000    mov eax,dword ptr fs:[0]


0041DC8D   |.  50                push eax


0041DC8E   |.  64:8925 00000000  mov dword ptr fs:[0],esp


0041DC95   |.  83EC 20           sub esp,20


0041DC98   |.  53                push ebx


0041DC99   |.  55                push ebp


0041DC9A   |.  56                push esi


0041DC9B   |.  57                push edi


0041DC9C   |.  68 E8B85300       push flashget.0053B8E8


0041DCA1   |.  68 A0E55200       push flashget.0052E5A0                  ;  ASCII "RegName"


0041DCA6   |.  8D4424 18         lea eax,dword ptr ss:[esp+18]


0041DCAA   |.  8BE9              mov ebp,ecx


0041DCAC   |.  68 A0C15200       push flashget.0052C1A0                  ;  ASCII "General"


0041DCB1   |.  50                push eax


0041DCB2   |.  896C24 28         mov dword ptr ss:[esp+28],ebp


0041DCB6   |.  E8 95C70C00       call flashget.004EA450                  ;取用户名


0041DCBB   |.  8DB5 60030000     lea esi,dword ptr ss:[ebp+360]


0041DCC1   |.  50                push eax


0041DCC2   |.  8BCE              mov ecx,esi


0041DCC4   |.  C74424 3C 0000000>mov dword ptr ss:[esp+3C],0


0041DCCC   |.  E8 83660B00       call flashget.004D4354


0041DCD1   |.  83CF FF           or edi,FFFFFFFF


0041DCD4   |.  8D4C24 10         lea ecx,dword ptr ss:[esp+10]


0041DCD8   |.  897C24 38         mov dword ptr ss:[esp+38],edi


0041DCDC   |.  E8 3A650B00       call flashget.004D421B


0041DCE1   |.  68 E8B85300       push flashget.0053B8E8


0041DCE6   |.  68 98E55200       push flashget.0052E598                  ;  ASCII "RegPass"


0041DCEB   |.  8D4C24 1C         lea ecx,dword ptr ss:[esp+1C]


0041DCEF   |.  68 A0C15200       push flashget.0052C1A0                  ;  ASCII "General"


0041DCF4   |.  51                push ecx


0041DCF5   |.  8BCD              mov ecx,ebp


0041DCF7   |.  E8 54C70C00       call flashget.004EA450                  ;取注册码


0041DCFC   |.  81C5 64030000     add ebp,364


0041DD02   |.  BB 01000000       mov ebx,1                               ;  ebx=1,下面有用呢


0041DD07   |.  50                push eax


0041DD08   |.  8BCD              mov ecx,ebp


0041DD0A   |.  895C24 3C         mov dword ptr ss:[esp+3C],ebx


0041DD0E   |.  E8 41660B00       call flashget.004D4354


0041DD13   |.  8D4C24 14         lea ecx,dword ptr ss:[esp+14]


0041DD17   |.  897C24 38         mov dword ptr ss:[esp+38],edi


0041DD1B   |.  E8 FB640B00       call flashget.004D421B


0041DD20   |.  8B16              mov edx,dword ptr ds:[esi]


0041DD22   |.  8B42 F8           mov eax,dword ptr ds:[edx-8]


0041DD25   |.  85C0              test eax,eax                            ;  邮箱长度


0041DD27   |.  0F84 4E010000     je flashget.0041DE7B


0041DD2D   |.  8B45 00           mov eax,dword ptr ss:[ebp]


0041DD30   |.  8B48 F8           mov ecx,dword ptr ds:[eax-8]


0041DD33   |.  85C9              test ecx,ecx                            ;  注册码长度


0041DD35   |.  0F84 40010000     je flashget.0041DE7B


0041DD3B   |.  8BCE              mov ecx,esi


0041DD3D   |.  E8 89210B00       call flashget.004CFECB


0041DD42   |.  8BCE              mov ecx,esi


0041DD44   |.  E8 36210B00       call flashget.004CFE7F


0041DD49   |.  8B0E              mov ecx,dword ptr ds:[esi]


0041DD4B   |.  8379 F8 05        cmp dword ptr ds:[ecx-8],5              ;  邮箱至少5个字符


0041DD4F   |.  0F8E 26010000     jle flashget.0041DE7B


0041DD55   |.  68 BCE55200       push flashget.0052E5BC


0041DD5A   |.  8BCE              mov ecx,esi


0041DD5C   |.  E8 851D0B00       call flashget.004CFAE6


0041DD61   |.  85C0              test eax,eax                            ;  注册名长度


0041DD63   |.  0F8C 12010000     jl flashget.0041DE7B


0041DD69   |.  68 B8E55200       push flashget.0052E5B8


0041DD6E   |.  8BCE              mov ecx,esi


0041DD70   |.  E8 711D0B00       call flashget.004CFAE6


0041DD75   |.  85C0              test eax,eax                            ;  邮箱长度减去".com"的长度


0041DD77   |.  0F8C FE000000     jl flashget.0041DE7B


0041DD7D   |.  8BCD              mov ecx,ebp


0041DD7F   |.  E8 47210B00       call flashget.004CFECB


0041DD84   |.  8BCD              mov ecx,ebp


0041DD86   |.  E8 F4200B00       call flashget.004CFE7F


0041DD8B   |.  8B55 00           mov edx,dword ptr ss:[ebp]


0041DD8E   |.  8B42 F8           mov eax,dword ptr ds:[edx-8]


0041DD91   |.  83F8 2C           cmp eax,2C                              ;  注册码长度=0x2c,40个字符,吓死我了-------它好像只检查前12个字符,我还没有验证


0041DD94   |.  0F85 E1000000     jnz flashget.0041DE7B                   ;  上面都是往"0041DE7B"跳,即GameOver


0041DD9A   |.  68 B0E55200       push flashget.0052E5B0                  ;  ASCII "fgc-"


0041DD9F   |.  8BCD              mov ecx,ebp


0041DDA1   |.  E8 401D0B00       call flashget.004CFAE6                  ;  找"fgc-"


0041DDA6   |.  85C0              test eax,eax


0041DDA8   |.  75 06             jnz short flashget.0041DDB0


0041DDAA   |.  895C24 10         mov dword ptr ss:[esp+10],ebx           ;  如果是"fgc-",则ebx=1,就是上面的(0041DD02)mov ebx,1


0041DDAE   |.  EB 18             jmp short flashget.0041DDC8


0041DDB0   |>  68 A8E55200       push flashget.0052E5A8                  ;  ASCII "fgf-"


0041DDB5   |.  8BCD              mov ecx,ebp


0041DDB7   |.  E8 2A1D0B00       call flashget.004CFAE6                  ;  找不到的话找"fgf-"


0041DDBC   |.  85C0              test eax,eax                            ;  如果是"fgf-",则eax=0,


0041DDBE   |.  0F85 B7000000     jnz flashget.0041DE7B


0041DDC4   |.  894424 10         mov dword ptr ss:[esp+10],eax


0041DDC8   |>  6A 2C             push 2C


0041DDCA   |.  8BCD              mov ecx,ebp


0041DDCC   |.  E8 7A680B00       call flashget.004D464B


0041DDD1   |.  8BF8              mov edi,eax


0041DDD3   |.  33C9              xor ecx,ecx


0041DDD5   |.  83C7 04           add edi,4                               ;  下面计算用"fgc-"或"fgf-"后的字符


0041DDD8   |.  33F6              xor esi,esi


0041DDDA   |>  8B07              /mov eax,dword ptr ds:[edi]


0041DDDC   |.  8BD6              |mov edx,esi


0041DDDE   |.  83C7 04           |add edi,4                              ;  准备下一步计算


0041DDE1   |.  83EA 00           |sub edx,0                              ;  Switch (cases 0..2)


0041DDE4   |.  894424 1C         |mov dword ptr ss:[esp+1C],eax          ;  前四个字符的HEX相连的int值


0041DDE8   |.  74 26             |je short flashget.0041DE10             ;  edx=esi为零跳,esi每次加1,三次用不同的算法,这是第一次


0041DDEA   |.  4A                |dec edx


0041DDEB   |.  74 17             |je short flashget.0041DE04             ;  第一次成功就计算第二次


0041DDED   |.  4A                |dec edx


0041DDEE   |.  75 38             |jnz short flashget.0041DE28            ;  第三次


0041DDF0   |.  0FBE4C24 1E       |movsx ecx,byte ptr ss:[esp+1E]         ;  第11个字符的HEX值


0041DDF5   |.  0FBED4            |movsx edx,ah                           ;  ah即第10个字符的HEX值


0041DDF8   |.  0FAFCA            |imul ecx,edx                           ;  转换为int后相乘


0041DDFB   |.  0FBE5424 1F       |movsx edx,byte ptr ss:[esp+1F]         ;  第12个字符的HEX值


0041DE00   |.  03CA              |add ecx,edx                            ;  相加


0041DE02   |.  EB 1F             |jmp short flashget.0041DE23            ;  跳到下面继续


0041DE04   |>  0FBE4C24 1E       |movsx ecx,byte ptr ss:[esp+1E]         ;  第7个字符的HEX值


0041DE09   |.  0FBED4            |movsx edx,ah                           ;  ah即第6个字符的HEX值


0041DE0C   |.  23CA              |and ecx,edx                            ;  与运算


0041DE0E   |.  EB 0B             |jmp short flashget.0041DE1B            ;  跳到下面继续


0041DE10   |>  8A4C24 1E         |mov cl,byte ptr ss:[esp+1E]            ;  即第3个字符的HEX


0041DE14   |.  8AD4              |mov dl,ah                              ;  ah即第2个字符的HEX


0041DE16   |.  33CA              |xor ecx,edx                            ;  异或


0041DE18   |.  83E1 7F           |and ecx,7F                             ;  与运算,这两步结果小于0x7f,不至于出现奇怪的字符


0041DE1B   |>  0FBE5424 1F       |movsx edx,byte ptr ss:[esp+1F]         ;  在把第x(x=4、8、12)个的HEX送入edx


0041DE20   |.  0FAFCA            |imul ecx,edx                           ;  相乘


0041DE23   |>  0FBEC0            |movsx eax,al                           ;  al当然是第y(1、5、9)个的HEX啦


0041DE26   |.  03C8              |add ecx,eax                            ;  与上面结果相加


0041DE28   |>  8B4424 10         |mov eax,dword ptr ss:[esp+10]          ;  根据"fgc-"或"fgf-"决定跳转,可以看上面的(0041DDAA和0041DDC4)


0041DE2C   |.  85C0              |test eax,eax


0041DE2E   |.  74 0C             |je short flashget.0041DE3C


0041DE30   |.  0FBE1D 2BC75200   |movsx ebx,byte ptr ds:[52C72B]         ;  52C72B 处的"kevinhyx12345"


0041DE37   |.  83FE 02           |cmp esi,2                              ;  两种情况ebx值非别为


1:6b(k) 65(e) 69(i)


2: 6b(k) 65(e) 76(v)


0041DE3A   |.  74 07             |je short flashget.0041DE43



[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
向楼主学习。。。
后面的那些好象没有参加比较,但位数要够

================
注册码部分
注册码共44位,真正的注册码是前16位
用户名:share
邮 箱 : heishuihe@yahoo.com.cn
注册码:fgf-9012098910431858187648990145586201107FFF (共44位)
注册码:fgf-901209891043后面随便你怎么输但要注意位数

[CODE]
Flashget1.65 爆破手记  ――By Share

第一部分:多线程的破解

原版数据:
004174B9  |.  8986 C8010000   MOV DWORD PTR DS:[ESI+1C8],EAX
004174BF  |.  7E 0A           JLE SHORT 00.004174CB
004174C1  |.  C786 C8010000 1>MOV DWORD PTR DS:[ESI+1C8],1E
004174CB  |>  6A 08           PUSH 8
修改为:
004174B9  |.  8986 C8010000   MOV DWORD PTR DS:[ESI+1C8],EAX
004174BF  |.  7E 00           JLE SHORT flashget.004174C1
004174C1  |.  C786 C8010000 0>MOV DWORD PTR DS:[ESI+1C8],270F
004174CB  |>  6A 08           PUSH 8

原版数据:
004174E1  |.  8986 CC010000   MOV DWORD PTR DS:[ESI+1CC],EAX
004174E7  |.  7E 0A           JLE SHORT 00.004174F3
004174E9  |.  C786 CC010000 6>MOV DWORD PTR DS:[ESI+1CC],64
修改为:
004174E1  |.  8986 CC010000   MOV DWORD PTR DS:[ESI+1CC],EAX
004174E7  |.  7E 00           JLE SHORT flashget.004174E9
004174E9  |.  C786 CC010000 0>MOV DWORD PTR DS:[ESI+1CC],270F

第二部分:爆破点,把EAX==1(修改成为注册用户)

原版数据:
0041DC70  /$  8B81 84020000   MOV EAX,DWORD PTR DS:[ECX+284]
0041DC76  \.  C3              RETN
修改为:
0041DC70  /$  B8 01000000     MOV EAX,1
0041DC75  |?  90              NOP
2005-2-10 17:08
0
雪    币: 238
活跃值: (250)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
多谢指正!!
我给弄错了
0041DD8E   |.  8B42 F8           mov eax,dword ptr ds:[edx-8]
0041DD91   |.  83F8 2C           cmp eax,2C
是检查注册码去掉"fgc-"或"fgf-"后的长度是否为40
真是不好意思
2005-2-10 17:27
0
游客
登录 | 注册 方可回帖
返回