X-CTF(REVERSE高级) BABYRE

分析程序

7到8行代码运行时解密 judge函数

使用python脚本patch,file-->script command...

from idc_bc695 import *
s = 0x600b00
for i in range(182):
    PatchByte(s + i, Byte(s+i)^0xc)

ida7.5版本需要加上from idc_bc695 import *,低于7.5版本的不需要加

执行脚本之后可见jugge处的数据改变,output window没有报错

 光标指到600B00处,按c销毁已有汇编,再按p重新汇编

 

 F5查看伪代码

 或者

gdb elf文件名
disas main  //查看main汇编
b *main+128  //下断点
r
disas  //查看解密出的judge汇编

 

 写出解密代码

s=['66','6d','63','64','7f','6b','37','64','3b','56','60','3b','6e','70'] 
for i in range (len(s)): 
    print(chr(int(s[i],16)^i),end='')

 或者

#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[]){
    char v2[15] = {0};
    char flag[15] = {0};
    int i=0;
    
    strcat(v2, "fmcd");
    v2[4] = 127;
    strcat(v2, "k7d;V`;np");
    for ( i = 0; i <= 13; ++i ){
        flag[i] = v2[i]^i;
    }
    printf("%s\n",flag);
    return 0;
}

 在线代码运行:https://tool.lu/coderunner/

posted @ 2021-08-16 00:26  黑冰Lisa  阅读(161)  评论(0编辑  收藏  举报