试图破解zend的授权验证

首先用文件监视工具,看执行 php cklic.php 调用了哪些文件。

php.exe => php5ts.dll  => php.ini  => ZendExtensionManager.dll   => ZendOptimizer.dll  然后生成了

C:\Documents and Settings\Administrator\Local Settings\Temp\ZendOptimizer.MemoryBase@Administrator@193488477  内容是 01600000, 

然后读入了授权文件  zyiis.zl, 最后打开了 cklic.php 。

---------------------

od载入php.exe,文件名作为参数,在 CreateFileW 下断点。断下后,观察参数是zyiis.zl时,多次ctrl+F9,回到了 ZendOptimizer 里读取 zyiis.zl 的代码位置:(下次要快速到达此位置:od载入,停在EP,然后打勾 break on new module load,显示载入 ZendOptimizer.dll 就可ctrl+G到代码地址了)

01536037        68 30875C01     PUSH 015C8730                            ; ASCII "rb"
0153603C        50              PUSH EAX
0153603D        896C24 18       MOV DWORD PTR SS:[ESP+18], EBP
01536041        896C24 1C       MOV DWORD PTR SS:[ESP+1C], EBP
01536045        FF15 A8015B01   CALL NEAR DWORD PTR DS:[<&MSVCRT.fopen>]  // 调用了 CreateFileW

然后就是一行行读取,每读到一行,先判断是否 Host-ID 行:

0153626B    55              PUSH EBP
0153626C    53              PUSH EBX
0153626D    68 FC865C01     PUSH 015C86FC                            ; ASCII "Host-ID"
01536272    FFD7            CALL NEAR EDI                            ; msvcrt.strncmp
01536279   /75 75           JNZ SHORT 015362F0  // 判断读到的是否 Host-ID, 不是就跳
然后再判断是否 Verification-Code 行:

015362F2    68 E8865C01     PUSH 015C86E8                            ; ASCII "Verification-Code"
015362F7    FFD7            CALL NEAR EDI                            ; msvcrt.strncmp  
015362FE   /0F85 C8000000   JNZ 015363CC  // 判断读到的是否 Verification-Code, 不是就跳
如果不是上面2个,就执行一次:

call _zend_hash_add_or_update
  00C0E678   00C0E6B4  ASCII "Registered-To"  // 参数1 key
  00C0E67C   0000000D                         // 参数2 key长度
  00C0E680   00C0E6C4  ASCII "www.ad8.cc"     // 参数3 值
  00C0E684   0000000B                         // 参数4 值长度


重点看读到  Verification-Code 怎么处理,先判断长度是否 3Dh,然后处理下:

01536399    FF15 CC015B01   CALL  msvcrt.sprintf
  00C0E67C   014E8260  |s = 014E8260
  00C0E680   015C86DC  |format = "MC%cCF%s"
  00C0E684   00000077  |<%c> = 77  ('w')                                                      // 首字节
  00C0E688   00C0E6C9  \<%s> = "BgfxTjZPzpdSlPgThYryXOiqnozAhQzDCdF0JTVt38EyoCfScG0+0YNrQ=="  // 其余部分
得到 "MCwCFBgfxTjZPzpdSlPgThYryXOiqnozAhQzDCdF0JTVt38EyoCfScG0+0YNrQ==" 然后:

01534B6F CALL zend_hash_find  得到 "Produced-By" 的值 YingZhong
01534BA2 CALL zend_hash_find  得到 "Product-Name" 的值 ZYADS
01534BBE CALL 01535180 把 ZYADS +\0 + YingZhong  合起来,返回结果在 eax:"ZYADS"。不解
01534D39 CALL zend_hash_find   查找 "ZYADS" 的值
01534C4F CALL 01544AC0 得到 "Expires"
01534C68 CALL zend_hash_find 得到 值 
然后比较 "Expires" 的值是否 "Never"
01534DDC  CALL 01544AC0 得到 "IP-Range"
01534E77  CALL 01544AC0 得到 "Max-Concurrent"
015350BE  CALL  php5ts.zend_hash_del_key_or_index 把 "ZYADS" 删了
最后返回到:

01547AD7    E8 04D9FEFF     CALL 015353E0
01547ADC    8B5424 48       MOV EDX, DWORD PTR SS:[ESP+48]  返回到这里

跟得晕头转向,试图用 trace来跟踪流程,结果trace.txt 存了1G了,还在显示tracing,放弃。又回来继续手跟。内存里搜 那个处理过的Code字串,只有一个地址,下内存访问断点。

01539B52    F2:AE           REPNE SCAS BYTE PTR ES:[EDI]
跟下去之后,发现进行了base64_decode 处理。
01531462        0FBE15 75805C01 MOVSX EDX, BYTE PTR DS:[15C8075]  // 到这里,base64_decode 处理完毕

再往下,没力气了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Company-Key = MIICIQKCAQEA9k+cn6UM4bXdwU/ncDoYAUayu6umR9r1Ma5j4pnNjju30Zgz+OK/59/KF/V0eDox1/m4/NfPdj2ojo9GVUXRermW5VFerNmSRltQGB1ioIe38OAJEMrmTkVRZL57VJtB4MXhwJAiEhHKGVzHjhrRhZ1gtjwCkOO4JutVnb7IHB+dOQDOstt8DXxACZRbDTPxfPex3IBboD9L3IA6JpBgdgzrpdccqPLhZ44Pet11oKNb43o79M9Zxz87QUPtAklsyJcKMhgMcY4Sf0l2Pkn5ZQzbVE7njW43GxKfsDAtoeQKIsE/KgeF1xetT6T0b4SHnHcQ5Iom50/mvdGwvO0kuQIVAO40nxhbGPrid9X1Ji272kxbJStbAoIBAQC9wu2Vfsb2qddOLqFoMTCmYJh6czv8tY5laSht3aRxbH3MF0GKzSGGe+RXi9pgWANcTZb6P350/hDk/o/jZ3DX+4Wvv2dj7olzsyeypGUjnTMN+fuU3IQAektW66czwIoIPIgcK2vhPEsy0nv8DZ8LGIDn64DMrEFn+3+WsFxaseRJtpSO7Nhumc4mQkHvLOF+B9mokFXWHElH88Z88ydmzLkLxTZZcTBxcX59wziVpwy48sqishGQChkxnZ82E9bro/cokJsHXRLVY+wNDm4ShBLXdgdr7TgdDG2iEiYwf7lUPVOPwQlnXctb9Q5XNQ379+3HlsRi4lkNN3ESTY4b MIIDPwIBAAKCAQEA9k+cn6UM4bXdwU/ncDoYAUayu6umR9r1Ma5j4pnNjju30Zgz+OK/59/KF/V0eDox1/m4/NfPdj2ojo9GVUXRermW5VFerNmSRltQGB1ioIe38OAJEMrmTkVRZL57VJtB4MXhwJAiEhHKGVzHjhrRhZ1gtjwCkOO4JutVnb7IHB+dOQDOstt8DXxACZRbDTPxfPex3IBboD9L3IA6JpBgdgzrpdccqPLhZ44Pet11oKNb43o79M9Zxz87QUPtAklsyJcKMhgMcY4Sf0l2Pkn5ZQzbVE7njW43GxKfsDAtoeQKIsE/KgeF1xetT6T0b4SHnHcQ5Iom50/mvdGwvO0kuQIVAO40nxhbGPrid9X1Ji272kxbJStbAoIBAQC9wu2Vfsb2qddOLqFoMTCmYJh6czv8tY5laSht3aRxbH3MF0GKzSGGe+RXi9pgWANcTZb6P350/hDk/o/jZ3DX+4Wvv2dj7olzsyeypGUjnTMN+fuU3IQAektW66czwIoIPIgcK2vhPEsy0nv8DZ8LGIDn64DMrEFn+3+WsFxaseRJtpSO7Nhumc4mQkHvLOF+B9mokFXWHElH88Z88ydmzLkLxTZZcTBxcX59wziVpwy48sqishGQChkxnZ82E9bro/cokJsHXRLVY+wNDm4ShBLXdgdr7TgdDG2iEiYwf7lUPVOPwQlnXctb9Q5XNQ379+3HlsRi4lkNN3ESTY4bAoIBAFSRLY1BCZ3GD44CVvIpjyKZlyVHy1jvp6P+ccdA0SQNEBsI9SpgQyfppxECopT6FqTVNxPI1Ua6vTSa5yq0bUpoEfvoTsHQQi31LdtgcTkUfqXi9Vy2hgo88/N4+EJAj4CjVc31KdTVELMr0ZPwC9JpWis+bLuu8L0Adk1f9z1bvjw44b0zsgmvtvTjY/5ZdgYFwBvlFfILAhiLS9wbdz8gfRKxJm1OQ+4xe3aqaXZ2x3tB7Zjm5danuv4U8V/o2L5trAzhf4cw7K27+4ncrn8H00tp56qcbBZBx23hnTeGOcpK2YeAbH1vjWQLSUdOkGxK3sx/NY1FxO89XYAVSooCFQC00NvyYxaCZW2Er4tJZJY/rEL8/w== Verification-Code = 4QDdr3wboPnMxZvfPnFXmc6z7yx07AIVAL9yVy9sE9BMd8VuKDO5A9Fo4YZ/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值