最近二开过程中,碰到
PHP混淆zym加密
的问题,刚开始找了好多网站都是付费的,后来在吾爱破解找到了解决方法。
大神解密及调试过程,详见原文:
https://www.52pojie.cn/thread-693641-1-1.html
decrypt.php
function
decrypt
(
$data
,
$key
)
$data_1
=
''
;
for
(
$i
=
0
;
$i
<
strlen
(
$data
)
;
$i
++
)
{
$ch
=
ord
(
$data
[
$i
]
)
;
if
(
$ch
<
245
)
{
if
(
$ch
>
136
)
{
$data_1
.
=
chr
(
$ch
/
2
)
;
}
else
{
$data_1
.
=
$data
[
$i
]
;
$data_1
=
base64_decode
(
$data_1
)
;
$key
=
md5
(
$key
)
;
$j
=
$ctrmax
=
32
;
$data_2
=
''
;
for
(
$i
=
0
;
$i
<
strlen
(
$data_1
)
;
$i
++
)
{
if
(
$j
<=
0
)
{
$j
=
$ctrmax
;
$j
--
;
$data_2
.
=
$data_1
[
$i
]
^
$key
[
$j
]
;
return
$data_2
;
function
find_data
(
$code
)
$code_end
=
strrpos
(
$code
,
'?>'
)
;
if
(
!
$code_end
)
{
return
""
;
$data_start
=
$code_end
+
2
;
$data
=
substr
(
$code
,
$data_start
,
-
46
)
;
return
$data
;
function
find_key
(
$code
)
$pos1
=
strpos
(
$code
,
"('"
.
preg_quote
(
base64_encode
(
'md5'
)
)
.
"');"
)
;
$pos2
=
strrpos
(
substr
(
$code
,
0
,
$pos1
)
,
'$'
)
;
$pos3
=
strrpos
(
substr
(
$code
,
0
,
$pos2
)
,
'$'
)
;
$var_name
=
substr
(
$code
,
$pos3
,
$pos2
-
$pos3
-
1
)
;
$pos4
=
strpos
(
$code
,
$var_name
,
$pos1
)
;
$pos5
=
strpos
(
$code
,
"('"
,
$pos4
)
;
$pos6
=
strpos
(
$code
,
"')"
,
$pos4
)
;
$key
=
substr
(
$code
,
$pos5
+
2
,
$pos6
-
$pos5
-
2
)
;
return
$key
;
$input_file
=
$argv
[
1
]
;
$output_file
=
$argv
[
1
]
.
'.decrypted.php'
;
$code
=
file_get_contents
(
$input_file
)
;
$data
=
find_data
(
$code
)
;
if
(
!
$code
)
{
echo
'未找到加密数据'
,
PHP_EOL
;
exit
;
$key
=
find_key
(
$code
)
;
if
(
!
$key
)
{
echo
'未找到秘钥'
,
PHP_EOL
;
exit
;
$decrypted
=
decrypt
(
$data
,
$key
)
;
$uncompressed
=
gzuncompress
(
$decrypted
)
;
if
(
$uncompressed
)
{
$decrypted
=
str_rot13
(
$uncompressed
)
;
}
else
{
$decrypted
=
str_rot13
(
$decrypted
)
;
file_put_contents
(
$output_file
,
$decrypted
)
;
echo
'解密后文件已写入到 '
,
$output_file
,
PHP_EOL
;
php decrypt.php encrypt.php
encrypt.php
为需解密的文件
PHP混淆zym解密最近二开过程中,碰到PHP混淆zym加密的问题,刚开始找了好多网站都是付费的,后来在吾爱破解找到了解决方法。大神解密及调试过程,详见原文:https://www.52pojie.cn/thread-693641-1-1.html源码decrypt.php<?phpfunction decrypt($data, $key){ $data_1 = ...
PHP
解密
PHP
加密sg11加密sg11
解密
全网最厚道的SG11
解密
方法sg11
解密
php
解密
SourceGuardian
解密
sg_load
解密
去除域名IP授权
最近在读一些有zend 5.4加密的代码,之前的黑刀无法
解密
5.4,网上找了下发现大多要收费,有一个工具叫G-DeZender能解5.4,但是未付费版本每点一次只能
解密
一个文件,这TM四五千个文件点完会死人的。
丢给公司的小莫同志研究了下,抓了下这个程序的进程,发现这个程序也是调用的本地文件去
解密
,那直接写个循环调用不就完了。。。 花了点时间找了个SeayDzend,支持zend 5.2,zend5.3,zend5.4 的
解密
,造福下大众。
private void initView() { nowScore = (TextView) findViewById(R.id.now_score); bestScore = (TextView) findViewById(R.id.best_score); reset = (Button) findViewById(R.id.reset); reset.setOnClickListener(this); sp = PreferenceManager.getDefaultSharedPreferences(this); editor = sp.edit(); compot = AnimationUtils.loadAnimation(this, R.anim.synt); initData(); View view1 = LayoutInflater.from(this).inflate(R.layout.game_alert, null); dialog = new AlertDialog.Builder(this) .setCancelable(false) .setView(view1) .create(); alert_retrun = view1.findViewById(R.id.retrun_alert); alert_retrun.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { retrunMain(); dialog.dismiss(); } }); alertRestart = view1.findViewById(R.id.restart_alert); alertRestart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { initData(); dialog.dismiss(); } });
zym
Btn = (Button) findViewById(R.id.
zym
_btn);
zym
Btn.setOnClickListener(this); }解释这段代码
这段代码是在 2048 游戏中初始化界面的方法 initView()。具体解释如下:
首先,通过 findViewById() 方法获取界面中的各种控件,包括 nowScore(当前得分)、bestScore(最高得分)、reset(重置按钮)、
zym
Btn(作者信息按钮)等。同时,通过 setOnClickListener() 方法设置按钮的点击监听事件。
接下来,通过 PreferenceManager.getDefaultSharedPreferences() 方法获取 SharedPreferences 对象 sp,用于保存游戏数据。同时,通过 sp.edit() 方法获取 SharedPreferences.Editor 对象 editor,用于向 sp 中写入数据。
然后,通过 AnimationUtils.loadAnimation() 方法加载一个动画 compot,用于在游戏中控制方块的合并动画效果。
接下来,通过 LayoutInflater.from() 方法从 game_alert.xml 布局文件中获取一个 View 对象 view1,用于在游戏结束时弹出提示框。然后,通过 AlertDialog.Builder() 方法创建一个 AlertDialog 对象 dialog,设置其为不可取消,将 view1 设置为其视图,最后通过 create() 方法创建弹窗。
接着,分别获取弹窗视图中的两个按钮 alert_retrun(返回主界面)和 alertRestart(重新开始游戏),并分别设置它们的点击监听事件,用于在游戏结束时处理相应的操作。
最后,获取界面中的作者信息按钮
zym
Btn,并设置其点击监听事件。当点击该按钮时,可以跳转到作者的个人主页等。
总之,这段代码实现了 2048 游戏中界面的初始化,并设置了相应的按钮点击监听事件,为游戏的正常进行奠定了基础。