软件:《2015年会计从业考试题库.exe》,51.2 MB (53,790,980 字节),就一个EXE和记录着一个开启密码(试用3次)的记事本,没有其他文件了。
http://pan.baidu.com/s/1eQrjReq
环境:win7×64 旗舰版,OD是OllyCAU中秋团圆庆祝版,插件PhantOm1.26加StrongOD。
打开软件伴随的记事本,有一个开启密码(试用3次),输入之后超过3次使用,点击OK之后退出软件。
PEID0.95普通扫描是yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h) [Overlay] *
核心扫描是Borland Delphi 6.0 - 7.0 [Overlay]
WSUnpacker扫描结果是VMProtect v1.63 - v2.xx
用OD加载:
005780D4 > 9C pushfd
005780D5 E8 D1240000 call 2015年会.0057A5AB
005780DA 50 push eax
005780DB F0:1F lock pop ds ; 不允许锁定前缀
005780DD FD std
005780DE FD std
005780DF 8697 926302B4 xchg byte ptr ds:[edi+B4026392], dl
005780E5 B2 C2 mov dl, 0C2
005780E7 BC 607F4009 mov esp, 9407F60
005780EC 97 xchg eax, edi
005780ED C4CC les ecx, esp ; 非法使用寄存器
005780EF 6F outs dx, dword ptr es:[edi]
005780F0 4D dec ebp
005780F1 2366 01 and esp, dword ptr ds:[esi+1]
005780F4 9C pushfd
005780F5 BF 0B9912A7 mov edi, A712990B
005780FA 17 pop ss
005780FB 91 xchg eax, ecx
005780FC 36:35 CA8AE710 xor eax, 10E78ACA
00578102 0F1F ??? ; 未知命令
00578104 AC lods byte ptr ds:[esi]
看起来有点乱,call不按F7程序都会运行起来。想想还是修改一下OD的SFX设置(选择“字节方式跟踪真正入口处”)看看有没有什么发现。
重新加载之后,显示如下代码:
004BFBA0 55 db 55 ; SFX 代码真正入口点
004BFBA1 8B db 8B
004BFBA2 EC db EC
004BFBA3 83 db 83
004BFBA4 C4 db C4
004BFBA5 F0 db F0
004BFBA6 B8 db B8
004BFBA7 . C4E64B00 dd 2015年会.004BE6C4
004BFBAB E8 db E8
004BFBAC . 74 7A je short 2015年会.004BFC28
004BFBAE . F4 hlt
004BFBAF . FFA1 10634C00 jmp dword ptr ds:[ecx+4C6310]
004BFBB5 8B db 8B
004BFBB6 00 db 00
004BFBB7 E8 db E8
004BFBB8 A4 db A4
004BFBB9 22 db 22 ; CHAR '"'
004BFBBA FB db FB
004BFBBB FF db FF
004BFBBC 8B db 8B
004BFBBD 0D db 0D
004BFBBE . 1C654C00 dd 2015年会.004C651C
想起刚刚打开的时候 有弹窗提示,经过筛选,确定是GetWindowTextA,设置好F2断点,F9运行断了下来。一路F8到弹窗提示“超过指定打开次数”。点击OK之后来到,往上一看,熟悉的结构:
004BD6D1 . /0F84 B2000000 je 2015年会.004BD789
004BD6D7 . |8B45 FC mov eax, dword ptr ss:[ebp-4]
004BD6DA . |E8 05CBF4FF call 2015年会.0040A1E4
004BD6DF . |8BD8 mov ebx, eax
004BD6E1 . |A1 10CE4C00 mov eax, dword ptr ds:[4CCE10]
004BD6E6 . |E8 F9CAF4FF call 2015年会.0040A1E4 ; 获取运行次数call
004BD6EB . |3BD8 cmp ebx, eax
004BD6ED |7F 16 jg short 2015年会.004BD705 ; 关键判断
004BD6EF . |B8 04DE4B00 mov eax, 2015年会.004BDE04
004BD6F4 . |E8 0781F8FF call 2015年会.00445800 ; 提示超过次数
004BD6F9 . |C605 24CE4C00>mov byte ptr ds:[4CCE24], 0
004BD700 . |E9 34050000 jmp 2015年会.004BDC39
004BD705 > |A1 10CE4C00 mov eax, dword ptr ds:[4CCE10]
004BD70A . |E8 D5CAF4FF call 2015年会.0040A1E4
004BD70F . |40 inc eax
004BD710 . |8D95 5CFFFFFF lea edx, dword ptr ss:[ebp-A4]
004BD716 . |E8 8DC9F4FF call 2015年会.0040A0A8
004BD71B . |8B95 5CFFFFFF mov edx, dword ptr ss:[ebp-A4]
004BD721 . |B8 10CE4C00 mov eax, 2015年会.004CCE10
004BD726 . |E8 117DF4FF call 2015年会.0040543C
004BD72B . |A1 C8CD4C00 mov eax, dword ptr ds:[4CCDC8]
004BD730 . |BA 30DD4B00 mov edx, 2015年会.004BDD30
004BD735 . |E8 D680F4FF call 2015年会.00405810
修改jg short 004BD705 改成jmp short 004BD705 之后保存修改。成功暴力破解了使用次数限制。
打开修改过的程序:
小虾不懂算法,能暴力破解就很满足了。特与大家分享分享
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)