binary
200 points
Lost Decryption
I created my own cipher and encrypted the very important file.
However, I lost the decryption program because of file system error, so now I cannot read the file.
Please help me.
lost_decryption.zip
???
tkmru
$ ./cipher
./cipher: error while loading shared libraries: libdecrypt.so: cannot open shared object file: No such file or directory
libencrypt.soはあるけどlibdecrypt.soはない。
libencrypt頑張って読んでdecryptすればよさそう。
sub_700()つらい
残り時間で読むのきつい
int sub_700(int arg0, int arg1) {
stack[2047] = 0xfa94b1238c6dd663;
stack[2046] = r14;
stack[2045] = 0x6ed0153c8f6d2b11;
stack[2044] = r12;
stack[2043] = 0x5;
stack[2042] = rbx;
r12 = arg0;
rbx = arg1; // ここに0x9104f95de694dc50
counter = 0x5;
rsp = rsp - 0x8 - 0x8 - 0x8 - 0x8 - 0x8 - 0x8 - 0x8;
do {
rax = (((r12 << 0x39) + r12 << 0x4) - r12 ^ r12) + rbx ^ ((((r12 << 0x39) + r12 << 0x4) - r12 ^ r12) + rbx) * 0x8 ^ rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317 ^ ((((r12 << 0x39) + r12 << 0x4) - r12 ^ r12) + rbx ^ ((((r12 << 0x39) + r12 << 0x4) - r12 ^ r12) + rbx) * 0x8) + 0x6ed0153c8f6d2b11;
rsi = (rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317 ^ (rax ^ rax >> 0x11 & 0xb78bc70454e32323) - rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317 ^ rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317) >> 0x1 ^ (rax ^ rax >> 0x11 & 0xb78bc70454e32323) - rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317 ^ rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317;
rbx = rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317 ^ (rax ^ rax >> 0x11 & 0xb78bc70454e32323) - rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317 ^ rbx * 0xfa94b1238c6dd663 + 0x2f3942d23a31a317 ^ rsi + rsi;
rax = (rbx >> 0x2 ^ rsi) * 0x4 ^ rbx ^ (rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3) * 0x8;
rdx = ((rax >> 0x4 ^ rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3) << 0x4 ^ rax ^ (rax >> 0x4 ^ rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3 ^ ((rax >> 0x4 ^ rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3) << 0x4 ^ rax) >> 0x5) << 0x5) >> 0x6 ^ rax >> 0x4 ^ rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3 ^ ((rax >> 0x4 ^ rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3) << 0x4 ^ rax) >> 0x5;
rax = rdx << 0x6 ^ (rax >> 0x4 ^ rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3) << 0x4 ^ rax ^ (rax >> 0x4 ^ rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3 ^ ((rax >> 0x4 ^ rbx >> 0x2 ^ rsi ^ ((rbx >> 0x2 ^ rsi) * 0x4 ^ rbx) >> 0x3) << 0x4 ^ rax) >> 0x5) << 0x5;
r12 = rax >> 0x7 ^ rdx;
rbx = rax ^ (rax >> 0x7 ^ rdx) << 0x7;
if (rax != (rax >> 0x7 ^ rdx) << 0x7) {
r12 = r12 * rbx;
}
r14 = 0x0;
do {
rax = sub_5e0(rbx >> r14 & 0xff);
rcx = r14;
r14 = r14 + 0x8;
r12 = r12 ^ sign_extend_32((rax & 0xff) << rcx);
} while (r14 != 0x40);
counter--;
} while (counter != 0x0);
return r12;
}
counter = 0xe;
r13 = arg_1;
do {
var_0 = var_0 ^ sub_700(ENCRYPT, ENCRYPT);
sub_700(ENCRYPT, 0x9104f95de694dc50);
sub_880(rbp);
sub_880(r13);
counter--;
} while (counter != 0x0);
xor多いし、ちょっと変更すればdecryptにそのまま使えるのではという気持ち