首页
社区
课程
招聘
请帮我分析算法!
发表于: 2006-8-20 09:30 3695

请帮我分析算法!

2006-8-20 09:30
3695
这一段call是计算注册码的,到:0056ED3B 8BFB mov edi, ebx这一行,真注册码已经在ebx里了。
寄存器当前状态:eax和ebx:输入的用户名;ecx:机器码;edx和esi:输入的单位名;edi:输入的假注册码。
另外,机器码和注册码都是8位的,中间加“-”。其它的我看不懂了。
请帮我分析算法,越详细越好,我很菜不懂汇编,如能教我写出注册机,那最好!谢谢!
:0056EC48 55                      push ebp        ;此时ebp:0012F3AC
:0056EC49 8BEC                    mov ebp, esp    ;此时esp:0012F330
:0056EC4B 83C4EC                  add esp, FFFFFFEC
:0056EC4E 53                      push ebx
:0056EC4F 56                      push esi
:0056EC50 57                      push edi
:0056EC51 33DB                    xor ebx, ebx
:0056EC53 895DEC                  mov dword ptr [ebp-14], ebx
:0056EC56 895DF0                  mov dword ptr [ebp-10], ebx
:0056EC59 894DF4                  mov dword ptr [ebp-0C], ecx
:0056EC5C 8955F8                  mov dword ptr [ebp-08], edx
:0056EC5F 8945FC                  mov dword ptr [ebp-04], eax
:0056EC62 8B45FC                  mov eax, dword ptr [ebp-04]
:0056EC65 E8AE58E9FF              call 00404518
:0056EC6A 8B45F8                  mov eax, dword ptr [ebp-08]
:0056EC6D E8A658E9FF              call 00404518
:0056EC72 33C0                    xor eax, eax
:0056EC74 55                      push ebp
:0056EC75 6865ED5600              push 0056ED65
:0056EC7A 64FF30                  push dword ptr fs:[eax]
:0056EC7D 648920                  mov dword ptr fs:[eax], esp
:0056EC80 33FF                    xor edi, edi
:0056EC82 8D55F0                  lea edx, dword ptr [ebp-10]
:0056EC85 8B45FC                  mov eax, dword ptr [ebp-04]
:0056EC88 E837FFFFFF              call 0056EBC4
:0056EC8D 8B55F0                  mov edx, dword ptr [ebp-10]
:0056EC90 8D45FC                  lea eax, dword ptr [ebp-04]
:0056EC93 E8E454E9FF              call 0040417C
:0056EC98 8D55EC                  lea edx, dword ptr [ebp-14]
:0056EC9B 8B45F8                  mov eax, dword ptr [ebp-08]
:0056EC9E E821FFFFFF              call 0056EBC4
:0056ECA3 8B55EC                  mov edx, dword ptr [ebp-14]
:0056ECA6 8D45F8                  lea eax, dword ptr [ebp-08]
:0056ECA9 E8CE54E9FF              call 0040417C
:0056ECAE 8B45FC                  mov eax, dword ptr [ebp-04]
:0056ECB1 E8AE56E9FF              call 00404364
:0056ECB6 8BF0                    mov esi, eax
:0056ECB8 85F6                    test esi, esi
:0056ECBA 7E2D                    jle 0056ECE9
:0056ECBC BB01000000              mov ebx, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0056ECE7(C)
|
:0056ECC1 8B45FC                  mov eax, dword ptr [ebp-04]
:0056ECC4 33C9                    xor ecx, ecx
:0056ECC6 8A4C18FF                mov cl, byte ptr [eax+ebx-01]
:0056ECCA 83E107                  and ecx, 00000007
:0056ECCD 8B45FC                  mov eax, dword ptr [ebp-04]
:0056ECD0 0FB64418FF              movzx eax, byte ptr [eax+ebx-01]
:0056ECD5 50                      push eax
:0056ECD6 8B45F4                  mov eax, dword ptr [ebp-0C]
:0056ECD9 5A                      pop edx
:0056ECDA 51                      push ecx
:0056ECDB 8BCA                    mov ecx, edx
:0056ECDD 99                      cdq
:0056ECDE F7F9                    idiv ecx
:0056ECE0 59                      pop ecx
:0056ECE1 D3E2                    shl edx, cl
:0056ECE3 03FA                    add edi, edx
:0056ECE5 43                      inc ebx
:0056ECE6 4E                      dec esi
:0056ECE7 75D8                    jne 0056ECC1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0056ECBA(C)
|
:0056ECE9 8B45F8                  mov eax, dword ptr [ebp-08]
:0056ECEC E87356E9FF              call 00404364
:0056ECF1 8BF0                    mov esi, eax
:0056ECF3 85F6                    test esi, esi
:0056ECF5 7E21                    jle 0056ED18
:0056ECF7 BB01000000              mov ebx, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0056ED16(C)
|
:0056ECFC 8B45F8                  mov eax, dword ptr [ebp-08]
:0056ECFF 0FB64418FF              movzx eax, byte ptr [eax+ebx-01]
:0056ED04 8BD0                    mov edx, eax
:0056ED06 83CAFF                  or edx, FFFFFFFF
:0056ED09 2355F4                  and edx, dword ptr [ebp-0C]
:0056ED0C 8B4DF8                  mov ecx, dword ptr [ebp-08]
:0056ED0F 0FAFD0                  imul edx, eax
:0056ED12 03FA                    add edi, edx
:0056ED14 43                      inc ebx
:0056ED15 4E                      dec esi
:0056ED16 75E4                    jne 0056ECFC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0056ECF5(C)
|
:0056ED18 8BC7                    mov eax, edi
:0056ED1A E871A1E9FF              call 00408E90
:0056ED1F 8BD8                    mov ebx, eax
:0056ED21 660FAF5DF4              imul bx, word ptr [ebp-0C]
:0056ED26 0FB7DB                  movzx ebx, bx
:0056ED29 03DF                    add ebx, edi
:0056ED2B 8B45F4                  mov eax, dword ptr [ebp-0C]
:0056ED2E E85DA1E9FF              call 00408E90
:0056ED33 66F7EF                  imul di
:0056ED36 0FB7C0                  movzx eax, ax
:0056ED39 03D8                    add ebx, eax
:0056ED3B 8BFB                    mov edi, ebx             真注册码在ebx里
:0056ED3D 33C0                    xor eax, eax
:0056ED3F 5A                      pop edx
:0056ED40 59                      pop ecx
:0056ED41 59                      pop ecx
:0056ED42 648910                  mov dword ptr fs:[eax], edx
:0056ED45 686CED5600              push 0056ED6C
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0056ED6A(U)
|
:0056ED4A 8D45EC                  lea eax, dword ptr [ebp-14]
:0056ED4D BA02000000              mov edx, 00000002
:0056ED52 E8B153E9FF              call 00404108
:0056ED57 8D45F8                  lea eax, dword ptr [ebp-08]
:0056ED5A BA02000000              mov edx, 00000002
:0056ED5F E8A453E9FF              call 00404108
:0056ED64 C3                      ret
:0056ED65 E93A4DE9FF              jmp 00403AA4
:0056ED6A EBDE                    jmp 0056ED4A
:0056ED6C 8BC7                    mov eax, edi
:0056ED6E 5F                      pop edi
:0056ED6F 5E                      pop esi
:0056ED70 5B                      pop ebx
:0056ED71 8BE5                    mov esp, ebp
:0056ED73 5D                      pop ebp
:0056ED74 C3                      ret

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费
支持
分享
最新回复 (6)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么没人帮我啊,难道是我表述的不清楚吗?
2006-8-20 18:06
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
3
呵呵,不是不帮你,光这样看,能写出注册机的人可能没有,因为代码有一部分可能在某个 CALL 中,下面一段有可能是:

:0056ECFC 8B45F8                  mov eax, dword ptr [ebp-08]             ;循环开始
:0056ECFF 0FB64418FF              movzx eax, byte ptr [eax+ebx-01]         
:0056ED04 8BD0                    mov edx, eax                       ;这里不是动态追踪没人知道是什么
:0056ED06 83CAFF                  or edx, FFFFFFFF               
:0056ED09 2355F4                  and edx, dword ptr [ebp-0C]
:0056ED0C 8B4DF8                  mov ecx, dword ptr [ebp-08]
:0056ED0F 0FAFD0                  imul edx, eax
:0056ED12 03FA                    add edi, edx
:0056ED14 43                      inc ebx                    ;循环计数
:0056ED15 4E                      dec esi
:0056ED16 75E4                    jne 0056ECFC                ;跳回循环处

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0056ECF5(C)
|
:0056ED18 8BC7                    mov eax, edi
:0056ED1A E871A1E9FF              call 00408E90
:0056ED1F 8BD8                    mov ebx, eax
:0056ED21 660FAF5DF4              imul bx, word ptr [ebp-0C]
:0056ED26 0FB7DB                  movzx ebx, bx
:0056ED29 03DF                    add ebx, edi
:0056ED2B 8B45F4                  mov eax, dword ptr [ebp-0C]
:0056ED2E E85DA1E9FF              call 00408E90
:0056ED33 66F7EF                  imul di
:0056ED36 0FB7C0                  movzx eax, ax
:0056ED39 03D8                    add ebx, eax
:0056ED3B 8BFB                    mov edi, ebx             真注册码在ebx里
2006-8-20 19:46
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
最初由 meishide 发布
怎么没人帮我啊,难道是我表述的不清楚吗?


静态分析不是一件容易的事,没有数据对照大多数时候是说不清楚的。
你想学习,起码应该让人知道是什么软件,在那里下载。毕竟反汇编代码不是数学公式。
2006-8-20 19:47
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 BlueT 发布
静态分析不是一件容易的事,没有数据对照大多数时候是说不清楚的。
你想学习,起码应该让人知道是什么软件,在那里下载。毕竟反汇编代码不是数学公式。

谢谢指教,我把软件上传到:http://meishide.ys168.com
2006-8-21 09:54
0
雪    币: 242
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
6
0056ECC1  |> /8B45 FC       /mov     eax, [ebp-4]                    ;  用户名china
0056ECC4  |. |33C9          |xor     ecx, ecx
0056ECC6  |. |8A4C18 FF     |mov     cl, [eax+ebx-1]                 ;  取用户名每一位字符的HEX
0056ECCA  |. |83E1 07       |and     ecx, 7                          ;  计算1
0056ECCD  |. |8B45 FC       |mov     eax, [ebp-4]
0056ECD0  |. |0FB64418 FF   |movzx   eax, byte ptr [eax+ebx-1]
0056ECD5  |. |50            |push    eax
0056ECD6  |. |8B45 F4       |mov     eax, [ebp-C]                    ;  机器码
0056ECD9  |. |5A            |pop     edx                             ;  HEX
0056ECDA  |. |51            |push    ecx
0056ECDB  |. |8BCA          |mov     ecx, edx
0056ECDD  |. |99            |cdq
0056ECDE  |. |F7F9          |idiv    ecx
0056ECE0  |. |59            |pop     ecx
0056ECE1  |. |D3E2          |shl     edx, cl
0056ECE3  |. |03FA          |add     edi, edx                        ;  将结果累加,最后结果FFFFFAAF
0056ECE5  |. |43            |inc     ebx
0056ECE6  |. |4E            |dec     esi                             ;  用机器码循环处理用户名字符HEX,并根据and 7的结果最后处理,累加结果
0056ECE7  |.^\75 D8         \jnz     short 0056ECC1
0056ECE9  |>  8B45 F8       mov     eax, [ebp-8]
0056ECEC  |.  E8 7356E9FF   call    00404364
0056ECF1  |.  8BF0          mov     esi, eax
0056ECF3  |.  85F6          test    esi, esi
0056ECF5  |.  7E 21         jle     short 0056ED18
0056ECF7  |.  BB 01000000   mov     ebx, 1
0056ECFC  |>  8B45 F8       /mov     eax, [ebp-8]                    ;  单位名称
0056ECFF  |.  0FB64418 FF   |movzx   eax, byte ptr [eax+ebx-1]
0056ED04  |.  8BD0          |mov     edx, eax
0056ED06  |.  83CA FF       |or      edx, FFFFFFFF
0056ED09  |.  2355 F4       |and     edx, [ebp-C]                    ;  与机器码与运算
0056ED0C  |.  8B4D F8       |mov     ecx, [ebp-8]
0056ED0F  |.  0FAFD0        |imul    edx, eax
0056ED12  |.  03FA          |add     edi, edx                        ;  与上面处理用户名的结果累加
0056ED14  |.  43            |inc     ebx
0056ED15  |.  4E            |dec     esi
0056ED16  |.^ 75 E4         \jnz     short 0056ECFC
0056ED18  |>  8BC7          mov     eax, edi                         ;  最后处理结果edi=AC5A29E2
0056ED1A  |.  E8 71A1E9FF   call    00408E90
0056ED1F  |.  8BD8          mov     ebx, eax                         ;  eax=0000AC5A 取结果前4位
0056ED21  |.  66:0FAF5D F4  imul    bx, [ebp-C]                      ;  堆栈 ss:[0012F324]=AF11  机器码后4位
0056ED26  |.  0FB7DB        movzx   ebx, bx
0056ED29  |.  03DF          add     ebx, edi                         ;  edi=AC5A29E2 ebx=F7FA
0056ED2B  |.  8B45 F4       mov     eax, [ebp-C]                     ;  机器码E4FEAF11
0056ED2E  |.  E8 5DA1E9FF   call    00408E90
0056ED33  |.  66:F7EF       imul    di                               ;  处理结果后4位di=29E2
0056ED36  |.  0FB7C0        movzx   eax, ax                          ;  ax=D63C
0056ED39  |.  03D8          add     ebx, eax                         ;  ebx=AC5B21DC
0056ED3B  |.  8BFB          mov     edi, ebx                         ;  ebx=AC5BF818

2006-8-21 11:34
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢testkey前辈,我回去慢慢研究,以后还要多向你请教才是!
2006-8-21 17:06
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册