最近,女友迷上了剑侠情缘2,特命小弟每天上网查免费外挂,终寻得剑2霸主,觉得不错,可惜只有3三试用期,无奈下定决心破它一破。那晓得功力不够功亏一篑,现将前阶段过程供大家分析。:)复制下FLY偶象的口头谗:
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、Ollydbg V1.10、PEiD、LordPE、ImportREC、WinHex
【软件下载网址】:http://down1.jx2king.com/soft/jk0312.exe
1、拿到软件,用PEiD分析,为UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo壳,参照前辈的方法手动或用upx-ripper脱壳。
2、脱壳后免费版可正常运行,但选正式版会出现网络错误提示。此问题记我郁闷了有两天,经过N次F7,F8,终于想到可能是文件大小比较校验。运用中断GetFileSize函数,找到两处
004B33FC . 8D55 CC lea edx, [ebp-34]
004B33FF . 33C0 xor eax, eax
004B3401 . E8 F6F6F4FF call 00402AFC
004B3406 . 8B45 CC mov eax, [ebp-34]
004B3409 . E8 4A16F5FF call 00404A58
004B340E . 50 push eax ; |FileName
004B340F . E8 8838F5FF call <jmp.&KERNEL32.CreateFileA> ; \CreateFileA
004B3414 . 8BD8 mov ebx, eax
004B3416 . 6A 00 push 0 ; /pFileSizeHigh = NULL
004B3418 . 53 push ebx ; |hFile
004B3419 . E8 5E39F5FF call <jmp.&KERNEL32.GetFileSize> ; \GetFileSize
004B341E . A3 74EE4B00 mov [4BEE74], eax ;在此处直接将原压缩文件大小存入。不知道老大们有没其它办法。我太菜了。
004B3423 . 6A 00 push 0
004B3425 . 68 80000000 push 80
004B342A . 6A 03 push 3
004B342C . 6A 00 push 0
004B342E . 6A 01 push 1
004B3430 . 68 00000080 push 80000000
004B3435 . 8D55 C0 lea edx, [ebp-40]
004B3438 . 33C0 xor eax, eax
004B343A . E8 BDF6F4FF call 00402AFC
004B343F . 8B45 C0 mov eax, [ebp-40]
004B3442 . 8D55 C4 lea edx, [ebp-3C]
004B3445 . E8 C25EF5FF call 0040930C
004B344A . FF75 C4 push dword ptr [ebp-3C]
004B344D . 68 1C354B00 push 004B351C ; ASCII "jxspr"
004B3452 . 68 2C354B00 push 004B352C ; ASCII ".dll"
004B3457 . 8D45 C8 lea eax, [ebp-38]
004B345A . BA 03000000 mov edx, 3
004B345F . E8 BC14F5FF call 00404920
004B3464 . 8B45 C8 mov eax, [ebp-38]
004B3467 . E8 EC15F5FF call 00404A58
004B346C . 50 push eax ; |FileName
004B346D . E8 2A38F5FF call <jmp.&KERNEL32.CreateFileA> ; \CreateFileA
004B3472 . 8BD8 mov ebx, eax
004B3474 . 6A 00 push 0 ; /pFileSizeHigh = NULL
004B3476 . 53 push ebx ; |hFile
004B3477 . E8 0039F5FF call <jmp.&KERNEL32.GetFileSize> ; \GetFileSize
004B347C . A3 78EE4B00 mov [4BEE78], eax ;;在此处直接将原压缩文件大小存入。不知道老大们有没其它办法。我太菜了。
004B3481 . 6A FF push -1
004B3483 . 6A 00 push 0
至此,exe和dll文件检验干均可通过。下面得搞定网络验证。
3、说到网络验证,我用了N种方法,用WPE拦封包、中断recv等。
最后用中断recv拦下,封包长度114.存在[4beee0]后面分析若前面数据为3e8则通过,不为则出错。但我接着花了一星期时间也没搞定。一运行就退出。
4、不好意思。第一次发文章,有些语无伦次,望各位前辈不要见笑。指导我走出误区为谢。
后附我力所能及的破解。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课