goto混淆加密反向解密思路

写在前面(一堆废话着急请略过)

首先我是个菜鸡。这段时间研究解密遇到一个主题。关键核心文件加密了。类似这种:

<?php
 defined("\x49\116\137\111\101") or exit("\x41\143\143\145\163\163\x20\x44\145\156\x69\x65\144"); class yzxcpt_sunModuleWxapp extends WeModuleWxapp {public function doPageactivitylist() { goto ZBpAU; Yykb9: foreach ($res as $key => $value) { goto B8RTV; TUI2i: $allzan = pdo_fetchcolumn("\163\145\154\x65\143\x74\x20\x63\157\x75\x6e\164\50\x69\144\x29\40\x61\163\x20\143\157\165\156\164\x20\x66\x72\157\155" . tablename("\x79\x7a\x78\x63\x70\164\137\163\165\156\x5f\x61\x63\164\x69\x76\151\164\x79\172\141\156") . "\40\x77\x68\x65\162\145\x20\x75\x6e\x69\x61\143\x69\144\40\75\40" . $_W["\x75\x6e\x69\x61\143\x69\144"] . "\x20\141\156\x64\x20\x61\x69\x64\x20\75\x20" . $value["\151\144"]); goto XEsex; gjDMe: goto ubQkx; goto Aq3KL; FRAU3: DRIM_: goto BXJiV; u0xtV: ubQkx: goto TUI2i; XEsex: $res[$key]["\172\x61\x6e"] = $value["\170\x6e\172\x61\x6e"] + $allzan["\143\x6f\165\x6e\x74"]; goto FRAU3; riKrf: $res[$key]["\151\163\172\141\x6e"] = 1; goto u0xtV; w07AK: $zan = pdo_get("\x79\x7a\x78\x63\x70\164\137\x73\x75\x6e\x5f\141\143\x74\151\166\151\x74\171\x7a\141\156", array("\x75\x6e\151\141\143\x69\x64" => $_W["\x75\x6e\151\x61\x63\151\x64"], "\165\151\x64" => $uid, "\141\151\144" => $value["\151\x64"])); goto V5M1X; V5M1X: if ($zan) { goto BB6x7; } goto k8F2e; k8F2e: $res[$key]["\x69\163\x7a\x61\156"] = 0; goto gjDMe; B8RTV: $res[$key]["\164\x69\x6d\145"] = date("\x59\x2d\x6d\55\144", $value["\x74\151\155\x65"]); goto w07AK; Aq3KL: BB6x7: goto riKrf; BXJiV: } goto V7iyu; e8HwJ: $where .= "\x20\141\156\x64\x20\x74\x79\160\x65\x20\x3d\x20" . $type; goto hDwoK; c9NgR: $this->return_msg(1, $res, "\x73\x75\143\x63\x65\x73\x73"); goto wztqM; sMfnF: $type = $_GPC["\164\x79\x70\145"]; goto Vl90R; pggxy: $where = "\40\167\x68\145\162\x65\x20\165\x6e\x69\x61\143\151\144\x20\75\40" . $_W["\x75\156\x69\141\143\151\144"] . "\40\x61\156\144\x20\163\x74\141\164\165\x73\x20\x3d\x20\x32"; goto UmOHV; c2hzE: $res = pdo_fetchall("\x73\x65\x6c\145\143\x74\40\52\40\x66\x72\x6f\x6d\40" . tablename("\x79\x7a\x78\143\x70\164\x5f\163\165\x6e\137\141\x63\164\x69\x76\x69\164\x79") . $where . "\x20\x6f\x72\144\145\162\x20\x62\171\40\x73\157\162\x74\40\x61\163\143\40" . $limit); goto Yykb9; Vl90R: $uid = $_GPC["\165\x69\144"]; goto j3k3y; bjheH: $limit = "\40\x6c\x69\x6d\x69\164\40" . $start . "\x2c" . $length; goto pggxy; j3k3y: $page = $_GPC["\160\x61\147\x65"] ? $_GPC["\160\x61\x67\145"] : 1; goto kY_oM; Z4LTa: $start = ($page - 1) * $length; goto bjheH; hDwoK: lMF7r: goto c2hzE; UmOHV: if (!$type) { goto lMF7r; } goto e8HwJ; V7iyu: Gtn_w: goto c9NgR; ZBpAU: global $_GPC, $_W; goto sMfnF; kY_oM: $length = $_GPC["\154\145\x6e\147\164\150"] ? $_GPC["\154\x65\x6e\147\x74\150"] : 10; goto Z4LTa; wztqM: }}
  • 这样就很难受,google 了一下有很多微擎 解密 的网站,都是按 kb 收费的,emmm,犹豫了一下没有剁手。
  • 想着自己学着玩也没人给报销,并且这次掏钱包解决了,下次遇到还是不会。。。
  • 索性研究研究吧。找了挺多相关帖子,奈何水平有限,那些文章提到的工具之类都不会用。只好用笨方法。
  • 搜索论坛关键词,还没有人发过类似帖子。倒有不少求助解密的。授人以鱼不如授人以渔。
  • 我这算是抛砖引玉吧,希望能有大佬写出脚本自动执行。节省人工。

准备工作

  • PHP goto 知识
    1. PHP.net
    2. PHP中文网
  • 格式化代码
    • 看到无序乱码就烦,我也是。
    • 可以用编辑器自带的代码格式化来优化
    • 我用的是 vscode 快捷键 alt + shift +f
    • 需要插件,叫啥我忘了。不过如果没装过按下快捷键的时候会提示你安装

推荐工具

加密特征

  • 目前发现微擎的加密主要是两种
    1. 变量值混淆
    2. 用 goto 语法 打乱正常代码顺序
  • 根据上面的特征,就方便做出反向解密
    1. 变量值混淆
      • 上面的工具可以解决,你可能好奇是怎么解析出来的
      • 其实用 echo | var_dump( ) | print_r( ) 同样可以达到一样的效果
      • 注意要用 ” 双引号 ”  php 才会解析
      • 具体是什么编码混淆的,因为本人能力有限。就不得而知了。有知道的大佬可以帮忙解惑。先谢谢啦。
    2. goto 打乱正常代码顺序
      • 目前我用的笨方法,就是一句一句找
      • 按照 goto 顺序 重新剪切还原
      • 缺点就是太浪费时间,目前还没有好的思路。想用正则可是不知道怎么写。。。。
      • 希望大佬能有高效解决方案

调试过程

小技巧

本内容需要输入密码才能查看

版权声明:
作者:王金阁
链接:https://www.nnbbxx.net/post-7220.html
来源:王金阁博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭