首页
社区
课程
招聘
[原创][第十二回] 第15 队 – programfan简单分析
发表于: 2007-6-25 15:30 6459

[原创][第十二回] 第15 队 – programfan简单分析

2007-6-25 15:30
6459

来到公司看到programfan只得了30分
看来注册算法是比较简单的
我简单分析下
忽略所有异常 直接用OD插件万能断点即可断到下面

00401CD7   > \8D4B FF       LEA ECX,DWORD PTR DS:[EBX-1]
00401CDA   .  33F6          XOR ESI,ESI
00401CDC   .  33C0          XOR EAX,EAX
00401CDE   .  85C9          TEST ECX,ECX
00401CE0   .  7C 0B         JL SHORT programf.00401CED
00401CE2   >  0FBE1C02      MOVSX EBX,BYTE PTR DS:[EDX+EAX]
00401CE6   .  03F3          ADD ESI,EBX
00401CE8   .  40            INC EAX                                  ;  用户名的每一位相加=x
00401CE9   .  3BC1          CMP EAX,ECX
00401CEB   .^ 7E F5         JLE SHORT programf.00401CE2
00401CED   >  A1 C4B04200   MOV EAX,DWORD PTR DS:[42B0C4]
00401CF2   .  8B0D C8B04200 MOV ECX,DWORD PTR DS:[42B0C8]            ;  KERNEL32.DLL
00401CF8   .  8B15 CCB04200 MOV EDX,DWORD PTR DS:[42B0CC]
00401CFE   .  8B1D 58D04200 MOV EBX,DWORD PTR DS:[42D058]
00401D04   .  894424 4C     MOV DWORD PTR SS:[ESP+4C],EAX
00401D08   .  A0 D0B04200   MOV AL,BYTE PTR DS:[42B0D0]
00401D0D   .  894C24 50     MOV DWORD PTR SS:[ESP+50],ECX
00401D11   .  55            PUSH EBP
00401D12   .  895424 58     MOV DWORD PTR SS:[ESP+58],EDX
00401D16   .  884424 5C     MOV BYTE PTR SS:[ESP+5C],AL
00401D1A   .  33C9          XOR ECX,ECX
00401D1C   >  0FBE440C 50   MOVSX EAX,BYTE PTR SS:[ESP+ECX+50]
00401D21   .  0FAFC6        IMUL EAX,ESI                             ;  x*K
00401D24   .  25 FFFF0080   AND EAX,8000FFFF
00401D29   .  79 07         JNS SHORT programf.00401D32              ;  不为负则跳
00401D2B   .  48            DEC EAX
00401D2C   .  0D 0000FFFF   OR EAX,FFFF0000
00401D31   .  40            INC EAX
00401D32   >  99            CDQ
00401D33   .  BD 1A000000   MOV EBP,1A                               ;  mod 1a
00401D38   .  F7FD          IDIV EBP
00401D3A   .  83C2 19       ADD EDX,19
00401D3D   .  81F2 BC000000 XOR EDX,0BC
00401D43   .  03DA          ADD EBX,EDX
00401D45   .  41            INC ECX
00401D46   .  83F9 0B       CMP ECX,0B                               ;  x和KERNEL32.DLL循环做一堆运算 然后得出一个值为x2
00401D49   .^ 7E D1         JLE SHORT programf.00401D1C
00401D4B   .  8B15 50D04200 MOV EDX,DWORD PTR DS:[42D050]            ;  取假码
00401D51   .  891D 58D04200 MOV DWORD PTR DS:[42D058],EBX            ;  x2进到42d058
00401D57   .  5D            POP EBP
00401D58   .  8B42 F8       MOV EAX,DWORD PTR DS:[EDX-8]
00401D5B   .  83F8 09       CMP EAX,9                                ;  SN长度小于9就会失败
00401D5E   .  7D 10         JGE SHORT programf.00401D70
00401D60   .  6A 00         PUSH 0
00401D62   .  FFD7          CALL EDI
00401D64   .  8B1D 58D04200 MOV EBX,DWORD PTR DS:[42D058]
00401D6A   .  8B15 50D04200 MOV EDX,DWORD PTR DS:[42D050]
00401D70   >  33C0          XOR EAX,EAX
00401D72   .  33C9          XOR ECX,ECX
00401D74   >  0FBE3402      MOVSX ESI,BYTE PTR DS:[EDX+EAX]
00401D78   .  81F6 BC000000 XOR ESI,0BC
00401D7E   .  03CE          ADD ECX,ESI                              ;  (sn1 xor bc)+(sn2 xor bc)+……+(sn9 xor bc)=x3
00401D80   .  40            INC EAX
00401D81   .  83F8 09       CMP EAX,9
00401D84   .^ 7C EE         JL SHORT programf.00401D74
00401D86   .  3BCB          CMP ECX,EBX                              ;  if x2不等于x3则失败
00401D88   .  0F85 8E020000 JNZ programf.0040201C
00401D8E   .  68 5CD04200   PUSH programf.0042D05C

而只要经过了JNZ programf.0040201C 就可注册成功。
下面虽然有比较多的CALL 可没有什么跳转  一直的F8即可顺利走到call 0041cc35  就成功了。因此00401D88下面究竟做了什么可不必理会。
那么根据上面分析 注册算法如下:
设用户名每一位相加后等于x
KERNEL32.DLL每一位用  test1   test2……test12来表示
[((x*test1) mod 1a)+19] xor bc=y1

[((x*test2) mod 1a)+19] xor bc=y2
……
[((x*test12) mod 1a)+19] xor bc=y12
y1+y2+y3+……+y12=x2

(sn1 xor bc)+(sn2 xor bc)+……+(sn9 xor bc)=x3
只要x2=x3就可以注册成功。
这里只要逆一下x3就可以了  这个求逆太简单了。就不说了
给出一组吧:
user:kyo327
sn:xxxxxxxxz

其中sn中的字母可以随意调换位置  都可以成功注册。
匆匆写下此文字   不对之处还望指出!!


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

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
2
沙发!```````````
2007-6-25 17:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
板凳!!瞄一眼。。。。。
2007-6-25 17:53
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
支持
2007-6-25 19:43
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
严重的学习ing
2007-6-26 13:08
0
雪    币: 228
活跃值: (11)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
终于有人肯给我们这些小菜写分析了,感谢!!
2007-6-26 17:59
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习中............
2007-6-26 18:12
0
游客
登录 | 注册 方可回帖
返回
//