首页
社区
课程
招聘
[求助]算法分析(1)
发表于: 2005-1-17 21:30 3542

[求助]算法分析(1)

2005-1-17 21:30
3542
请高手帮助看看,小第在破解中碰到以下算法,反汇编后看不明白,请大家指点。
(1)
:004011BF 50                      push :004011C0 E89B3F0000              call 00405160         转移到(2)
----------------
(2)
:00405160 55                      push ebp
:00405161 8BEC                    mov ebp, esp
:00405163 8B4508                  mov eax, dword ptr [ebp+08]
:00405166 50                      push eax
:00405167 E8F4FEFFFF              call 00405060  转移到(3)
:0040516C 83C404                  add esp, 00000004
:0040516F 5D                      pop ebp
:00405170 C3                      ret        -->回到(1)
-----------------
(3)
* Referenced by a CALL at Address:
|:00405167   
|
:00405060 55                      push ebp
:00405061 8BEC                    mov ebp, esp
:00405063 83EC14                  sub esp, 00000014

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004050AE(U)
|
:00405066 833D10C3420001          cmp dword ptr [0042C310], 00000001
:0040506D 7E17                    jle 00405086              不等则跳
:0040506F 6A08                    push 00000008
:00405071 8B4508                  mov eax, dword ptr [ebp+08]
:00405074 33C9                    xor ecx, ecx
:00405076 8A08                    mov cl, byte ptr [eax]
:00405078 51                      push ecx
:00405079 E832460000              call 004096B0    ========
:0040507E 83C408                  add esp, 00000008
:00405081 8945F0                  mov dword ptr [ebp-10], eax
:00405084 EB19                    jmp 0040509F     ---------

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040506D(C)
|
:00405086 8B5508                  mov edx, dword ptr [ebp+08]
:00405089 33C0                    xor eax, eax
:0040508B 8A02                    mov al, byte ptr [edx]

* Possible StringData Ref from Data Obj ->"         (((((                "
                                        ->"  H"
                                  |
:0040508D 8B0D04C14200            mov ecx, dword ptr [0042C104]
:00405093 33D2                    xor edx, edx
:00405095 668B1441                mov dx, word ptr [ecx+2*eax]
:00405099 83E208                  and edx, 00000008
:0040509C 8955F0                  mov dword ptr [ebp-10], edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405084(U)
|
:0040509F 837DF000                cmp dword ptr [ebp-10], 00000000
:004050A3 740B                    je 004050B0       ---------
:004050A5 8B4508                  mov eax, dword ptr [ebp+08]
:004050A8 83C001                  add eax, 00000001
:004050AB 894508                  mov dword ptr [ebp+08], eax
:004050AE EBB6                    jmp 00405066      --------

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004050A3(C)
|
:004050B0 8B4D08                  mov ecx, dword ptr [ebp+08]
:004050B3 33D2                    xor edx, edx
:004050B5 8A11                    mov dl, byte ptr [ecx]
:004050B7 8955FC                  mov dword ptr [ebp-04], edx
:004050BA 8B4508                  mov eax, dword ptr [ebp+08]
:004050BD 83C001                  add eax, 00000001
:004050C0 894508                  mov dword ptr [ebp+08], eax
:004050C3 8B4DFC                  mov ecx, dword ptr [ebp-04]
:004050C6 894DF4                  mov dword ptr [ebp-0C], ecx
:004050C9 837DFC2D                cmp dword ptr [ebp-04], 0000002D
:004050CD 7406                    je 004050D5       --------》       《1》
:004050CF 837DFC2B                cmp dword ptr [ebp-04], 0000002B
:004050D3 7513                    jne 004050E8      --------》      《2》

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004050CD(C)
|
:004050D5 8B5508                  mov edx, dword ptr [ebp+08]        《1》
:004050D8 33C0                    xor eax, eax
:004050DA 8A02                    mov al, byte ptr [edx]
:004050DC 8945FC                  mov dword ptr [ebp-04], eax
:004050DF 8B4D08                  mov ecx, dword ptr [ebp+08]
:004050E2 83C101                  add ecx, 00000001
:004050E5 894D08                  mov dword ptr [ebp+08], ecx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004050D3(C)
|
:004050E8 C745F800000000          mov [ebp-08], 00000000       《2》

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405149(U)
|
:004050EF 833D10C3420001          cmp dword ptr [0042C310], 00000001     《B》
:004050F6 7E13                    jle 0040510B               《3》
:004050F8 6A04                    push 00000004
:004050FA 8B55FC                  mov edx, dword ptr [ebp-04]
:004050FD 52                      push edx
:004050FE E8AD450000              call 004096B0
:00405103 83C408                  add esp, 00000008
:00405106 8945EC                  mov dword ptr [ebp-14], eax
:00405109 EB15                    jmp 00405120                《4》

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004050F6(C)
|
:0040510B 8B45FC                  mov eax, dword ptr [ebp-04]     《3》

* Possible StringData Ref from Data Obj ->"         (((((                "
                                        ->"  H"
                                  |
:0040510E 8B0D04C14200            mov ecx, dword ptr [0042C104]
:00405114 33D2                    xor edx, edx
:00405116 668B1441                mov dx, word ptr [ecx+2*eax]
:0040511A 83E204                  and edx, 00000004
:0040511D 8955EC                  mov dword ptr [ebp-14], edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405109(U)
|
:00405120 837DEC00                cmp dword ptr [ebp-14], 00000000     《4》
:00405124 7425                    je 0040514B                        《5》
:00405126 8B45F8                  mov eax, dword ptr [ebp-08]
:00405129 6BC00A                  imul eax, 0000000A
:0040512C 8B4DFC                  mov ecx, dword ptr [ebp-04]
:0040512F 8D5408D0                lea edx, dword ptr [eax+ecx-30]
:00405133 8955F8                  mov dword ptr [ebp-08], edx
:00405136 8B4508                  mov eax, dword ptr [ebp+08]
:00405139 33C9                    xor ecx, ecx
:0040513B 8A08                    mov cl, byte ptr [eax]
:0040513D 894DFC                  mov dword ptr [ebp-04], ecx
:00405140 8B5508                  mov edx, dword ptr [ebp+08]
:00405143 83C201                  add edx, 00000001
:00405146 895508                  mov dword ptr [ebp+08], edx    循环很多次 查d edx=从78787878逐步缩小到一位
:00405149 EBA4                    jmp 004050EF            〈B〉      

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405124(C)
|
:0040514B 837DF42D                cmp dword ptr [ebp-0C], 0000002D     《5》
:0040514F 7507                    jne 00405158                《6》
:00405151 8B45F8                  mov eax, dword ptr [ebp-08]
:00405154 F7D8                    neg eax
:00405156 EB03                    jmp 0040515B          《7》

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040514F(C)
|
:00405158 8B45F8                  mov eax, dword ptr [ebp-08]       《6》

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405156(U)
|
:0040515B 8BE5                    mov esp, ebp        《7》
:0040515D 5D                      pop ebp
:0040515E C3                      ret     -->返回到(2)结束

:0040515F CC                      int 03

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
本例的情况是,可以爆破,我找到关键跳转后把JNZ-->JZ  0F 85-->0F 84  程序可以运行完毕。但其中的一笔6位数字显示不正确,没有反出正确的6位数字。
这里涉及到前面的算法问题,小弟摸索了好久,由于较菜,不得要领。

本例的特点是:根据输入的9位密码数字算出正确的6位数字。

爆破无效
2005-1-17 21:40
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我想学学如何分析出此类算法,请高手指点。

2005-1-17 21:42
0
游客
登录 | 注册 方可回帖
返回
//