手把手教你破解microwin4的POU密码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

天气: 晴朗心情: 高兴

软件:step7-micro/win4.0.3.08

工具:OllDbg v1.10

作者:浪客剑心

Email:s_blin@

用OllDbg载入microwin,新建项目,右键点击SBR_0,属性,设定保护密码为4321,确定。

再次进入属性,输入错误密码1234,提示输入了不正确密码,于是从该处入手,中断。

思路:在输入密码时,程序会判断输入的密码跟保存的POU密码进行判断,关键点就是输入后中断程序,用分析软件单步运行,

找到程序判断密码的地方,由于密码错误时有消息框提示,我们便可从此处入手中断,然后往前查找程序判断密码的地方。

切换到OllDbg,在命令栏插件中输入bpx messageboxa,切换到microwin再次输入错误密码,非常幸运,OllDbg中断在这里:

0051DA0C |. 8B00 mov eax,dword ptr ds:[eax]

0051DA0E |. 52 push edx ; /Style

0051DA0F |. 50 push eax ; |Title

0051DA10 |. 8B4424 18 mov eax,dword ptr ss:[esp+18] ; |

0051DA14 |. 50 push eax ; |Text

0051DA15 |. 53 push ebx ; |hOwner

0051DA16 |. FF15 88306C00 call dword ptr ds:[<&USER32.MessageBoxA>] ; \MessageBoxA <==中断在此处

0051DA1C |. 8D4C24 7C lea ecx,dword ptr ss:[esp+7C]

0051DA20 |. FFD7 call edi

0051DA22 |. 8B7424 14 mov esi,dword ptr ss:[esp+14]

0051DA26 |. 8B8424 800000>mov eax,dword ptr ss:[esp+80]

0051DA2D |. 8B4C24 18 mov ecx,dword ptr ss:[esp+18]

0051DA31 |. 85C0 test eax,eax

0051DA33 |. 898E 9C010000 mov dword ptr ds:[esi+19C],ecx

0051DA39 |. 74 09 je short microwin.0051DA44

0051DA3B |. 6A 01 push 1 ; /Enable = TRUE

0051DA3D |. 50 push eax ; |hWnd

0051DA3E |. FF15 C0306C00 call dword ptr ds:[<&USER32.EnableWindow>] ; \EnableWindow

0051DA44 |> 6A 01 push 1

0051DA46 |. 8BCE mov ecx,esi

0051DA48 |. E8 47C00900 call

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

0051DA51 |. C78424 8C0000>mov dword ptr ss:[esp+8C],-1

0051DA5C |. E8 89AF0900 call

0051DA61 |. 8B8C24 840000>mov ecx,dword ptr ss:[esp+84]

0051DA68 |. 5F pop edi

0051DA69 |. 5E pop esi

0051DA6A |. 5D pop ebp

0051DA6B |. 5B pop ebx

0051DA6C |. 64:890D 00000>mov dword ptr fs:[0],ecx

0051DA73 |. 81C4 80000000 add esp,80

0051DA79 \. C2 1000 retn 10

往下看,从中断到返回处都没有越过该中断的跳转,于是按F8到0051DA79,返回上一级。返回后来到这里:

0047F050 /$ 56 push esi

0047F051 |. E8 0C9A1300 call

0047F056 |. 8B40 04 mov eax,dword ptr ds:[eax+4]

0047F059 |. 85C0 test eax,eax

0047F05B |. 74 32 je short microwin.0047F08F <==此处跳转

0047F05D |. 8B7424 0C mov esi,dword ptr ss:[esp+C]

0047F061 |. 8D8E 2EF8FF5F lea ecx,dword ptr ds:[esi+5FFFF82E] ; Switch (cases A00007D2..A00007DD)

0047F067 |. 83F9 0B cmp ecx,0B

0047F06A |. 77 0F ja short microwin.0047F07B

0047F06C |. 33D2 xor edx,edx

0047F06E |. 8A91 A0F04700 mov dl,byte ptr ds:[ecx+47F0A0]

0047F074 |. FF2495 98F047>jmp dword ptr ds:[edx*4+47F098]

0047F07B |> 8B4C24 10 mov ecx,dword ptr ss:[esp+10] ; Default case of switch 0047F061 0047F07F |. 8B5424 08 mov edx,dword ptr ss:[esp+8]

0047F083 |. 6A 00 push 0 ; /Arg4 = 00000000

0047F085 |. 51 push ecx ; |Arg3

0047F086 |. 56 push esi ; |Arg2

0047F087 |. 52 push edx ; |Arg1

0047F088 |. 8BC8 mov ecx,eax ; |

0047F08A |. E8 C1E20900 call microwin.0051D350 ; \microwin.0051D350 <==此处是调用刚才call的地方

0047F08F |> B8 01000000 mov eax,1 ; Cases A00007D2,A00007D3,A00007DC,A00007DD of switch 0047F061

0047F094 |. 5E pop esi

0047F095 \. C3 retn

注意从0047F05B处有一跳转到0047F08F,刚好绕过错误提示框,于是在0047F05B处下断,重复运行后中断在此处。

修改标志位,强制跳转到0047F08F,按F9运行。此时提示框没再出来,但访问权限依然没变,不得不继续往上继续寻找关键点。

在0047F095处下断点,重复运行后来到断点处,F8返回到上一级CALL:

0042FB35 |. 83C4 10 add esp,10

0042FB38 |. C3 retn

0042FB39 |> 68 30200000 push 2030 <==注意这里,有一跳转到此处

0042FB3E |. 50 push eax

0042FB3F |. 68 7E130000 push 137E

0042FB44 |. E8 07F50400 call microwin.0047F050 <==此处为返回call

0042FB49 |. 8DB5 B0000000 lea esi,dword ptr ss:[ebp+B0]

相关文档
最新文档