赞
踩
OD载入文件,F9运行,点击注册按钮,弹出注册页面
去掉网页弹窗,字符串搜索,找到网址
内存修改网址,用00填充
保存文件
分析dump出来的文件
提示字符串刚才在找网址的时候见过,定位过去
跟踪跳转,直到找到关键跳转
验证一下找的对不对,再次运行程序,NOP掉关键跳转,程序注册成功。
使用这个工具可以查看响应函数地址,确定按钮的响应函数地址是0x4F9110
定位到响应函数,F8跟踪
0x4F9162处F8会运行到关键跳转断点处,也就是说这个CALL就是关键函数了,注册码计算判断都在这个函数里进行,F7单步进入,继续F8跟踪
观察堆栈,此处出现注册码的比较,比较完成后会把ax的值保存在[ebp-0xE8]中,接下来会判断该值是否为0,不为0对[ebp-0x34]赋值为0xFFFF,跳转到关键跳转进行判断,下面是详细的代码分析
004FB0C8 > \FF75 C4 PUSH DWORD PTR SS:[EBP-0x3C] ; "FLA873416588611047" 004FB0CB . FF75 C0 PUSH DWORD PTR SS:[EBP-0x40] ; "123456" 004FB0CE . E8 C36FF0FF CALL <JMP.&MSVBVM60.__vbaStrCmp> 004FB0D3 . F7D8 NEG EAX 004FB0D5 . 1BC0 SBB EAX,EAX 004FB0D7 . 40 INC EAX 004FB0D8 . F7D8 NEG EAX 004FB0DA . 66:8985 18FFF>MOV WORD PTR SS:[EBP-0xE8],AX ; 标志位赋值 004FB0E1 . 8D45 C0 LEA EAX,DWORD PTR SS:[EBP-0x40] 004FB0E4 . 50 PUSH EAX 004FB0E5 . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-0x3C] 004FB0E8 . 50 PUSH EAX 004FB0E9 . 6A 02 PUSH 0x2 004FB0EB . E8 946FF0FF CALL <JMP.&MSVBVM60.__vbaFreeStrList> 004FB0F0 . 83C4 0C ADD ESP,0xC 004FB0F3 . 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-0x50] 004FB0F6 . 50 PUSH EAX 004FB0F7 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-0x4C] 004FB0FA . 50 PUSH EAX 004FB0FB . 6A 02 PUSH 0x2 004FB0FD . E8 646FF0FF CALL <JMP.&MSVBVM60.__vbaFreeObjList> 004FB102 . 83C4 0C ADD ESP,0xC 004FB105 . 0FBF85 18FFFF>MOVSX EAX,WORD PTR SS:[EBP-0xE8] ; 取出保存的值 004FB10C . 85C0 TEST EAX,EAX 004FB10E . 74 0E JE SHORT PPR_1.004FB11E ; 进行判断 004FB110 . C745 FC 06000>MOV DWORD PTR SS:[EBP-0x4],0x6 004FB117 . 66:834D CC FF OR WORD PTR SS:[EBP-0x34],0xFFFF 004FB11C . EB 31 JMP SHORT PPR_1.004FB14F ; 跳转到关键跳转 004FB11E > C745 FC 09000>MOV DWORD PTR SS:[EBP-0x4],0x9 004FB125 . 8D85 F8FEFFFF LEA EAX,DWORD PTR SS:[EBP-0x108] 004FB12B . 50 PUSH EAX ; /TMPend8 004FB12C . 8D85 08FFFFFF LEA EAX,DWORD PTR SS:[EBP-0xF8] ; | 004FB132 . 50 PUSH EAX ; |TMPstep8 004FB133 . 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-0x30] ; | 004FB136 . 50 PUSH EAX ; |Counter8 004FB137 . E8 4C6EF0FF CALL <JMP.&MSVBVM60.__vbaVarForNext> ; \__vbaVarForNext 004FB13C . 8985 E0FEFFFF MOV DWORD PTR SS:[EBP-0x120],EAX 004FB142 > 83BD E0FEFFFF>CMP DWORD PTR SS:[EBP-0x120],0x0 004FB149 .^ 0F85 86FEFFFF JNZ PPR_1.004FAFD5 004FB14F > C745 FC 0A000>MOV DWORD PTR SS:[EBP-0x4],0xA 004FB156 . 66:837D CC FF CMP WORD PTR SS:[EBP-0x34],0xFFFF 004FB15B . 0F85 61030000 JNZ PPR_1.004FB4C2 ; 跳转到失败 004FB161 . C745 FC 0B000>MOV DWORD PTR SS:[EBP-0x4],0xB 004FB168 . 833D B8185000>CMP DWORD PTR DS:[0x5018B8],0x0 004FB16F . 75 1B JNZ SHORT PPR_1.004FB18C
已经可以确定,堆栈中出现的字符串 "FLA873416588611047"就是注册码,进行验证
该软件的注册码是唯一的,也就不需要注册机了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。