能力值:
( LV2,RANK:15 )
|
-
-
2 楼
求一下 群
|
能力值:
( LV15,RANK:833 )
|
-
-
3 楼
|
能力值:
( LV17,RANK:1820 )
|
-
-
4 楼
看着挺复杂的,没点逆向功底还真搞不定。一时来兴趣分析了下,重点还是控制流混淆的还原,也有动态反调试,但是可以用pin直接hook父进程打印出真实控制流指令,中间调试时直接patch alarm(60)的情况,把60秒改成0xFFFFFFFF,就不会在调试时被中断退出,而子进程虽然被ptrace,无法直接调试或hook,但可以跟踪父进程。于是,边ida逆向父进程函数,边寻找插点位置,其实重点就3处,: KNOB<ADDRINT> KnobPInst(KNOB_MODE_WRITEONCE, "pintool", "pinst", "0x40238D", "parent instruction address to read rax");
KNOB<ADDRINT> KnobPCall(KNOB_MODE_WRITEONCE, "pintool", "pcall", "0x4021B2", "parent call instruction address");
KNOB<ADDRINT> KnobPSrc(KNOB_MODE_WRITEONCE, "pintool", "psrc", "0x40203D", "parent instruction address to read rdx"); 就是记录跳转前后的地址而已,至于中间什么栈模拟操作的虚拟机指令,完全不用逆,不用管,这就大大地提升解题速度。
然后用pin执行,获得还原指令: "$PIN_ROOT/pin" -t ./obj-intel64/child_ins_trace.so -- ../tradre > ../trace.txt 对比下控制流还原前后的情况:

基于pin hook的代码完全是让AI写的,我没写一行代码,但是要基于自己手工逆向分析后,告诉AI具体怎么做才行,也折腾了几个小时,还原出指令后,后面的就是分析汇编,详细见楼主的分析,主要就是AES+xor随机值+xor固定数组的算法,不再赘述。
完整的pin代码和还原出来的指令见附件。
最后于 2025-12-20 21:10
被riusksk编辑
,原因:
|
能力值:
( LV17,RANK:1820 )
|
-
-
5 楼
顺道问下楼主,ABabyChal这道Reverse题分析过没:e53K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0N6r3k6Q4x3X3g2T1N6h3N6C8N6g2)9J5k6h3y4G2L8g2)9J5c8X3y4Z5j5h3I4D9k6h3&6Y4k6i4y4Q4x3V1k6V1k6i4c8S2K9h3I4Q4x3V1k6A6k6q4)9J5c8U0t1&6z5e0k6Q4x3X3g2Z5N6r3#2D9i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1%4i4K6V1@1i4@1p5^5i4@1f1#2i4@1q4q4i4K6V1^5i4@1f1$3i4K6V1$3i4@1t1&6j5i4u0C8i4K6g2X3k6r3W2K6j5i4y4E0i4@1f1@1i4@1t1^5i4K6S2q4j5i4u0C8i4K6g2X3k6r3g2U0L8$3#2H3L8r3W2D9k6i4u0Q4c8e0g2Q4z5f1c8Q4z5o6N6Q4c8e0k6Q4z5e0N6Q4b7e0m8Q4c8e0k6Q4b7U0y4Q4z5e0g2Q4c8e0g2Q4z5p5k6Q4z5p5c8Q4c8e0N6Q4b7V1y4Q4z5e0k6Q4c8e0S2Q4b7f1k6Q4z5e0q4Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4z5p5k6Q4b7f1k6Q4c8e0S2Q4z5o6y4Q4b7V1c8Q4c8e0k6Q4z5e0S2Q4b7f1k6S2j5X3y4Q4c8e0g2Q4b7V1y4Q4z5e0g2Q4c8e0k6Q4z5e0y4Q4z5p5g2Q4c8e0S2Q4b7e0u0Q4b7f1u0Q4c8e0c8Q4b7V1k6Q4b7f1g2Q4c8e0k6Q4z5e0c8Q4b7U0W2Q4c8e0c8Q4b7V1q4Q4z5o6j5`.
最后于 2025-12-31 15:38
被riusksk编辑
,原因:
|
|
|