吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1979|回复: 18
收起左侧

[求助] 请问这段ida代码怎么反汇编呢

[复制链接]
weisuolong 发表于 2020-8-14 17:34
下面这段代码。怎么能想个办法,运行一下,看下参数啥的,方便看算法 具体是啥样的呢? 多谢各位了
__int64 __fastcall main(int argc, char** argv)
{
        signed __int64 v2; // r15
        char* array1; // rsi
        signed __int64 endPtrOfArray1; // rdi
        _DWORD* vectorInt2; // r14
        _DWORD* v6; // rbx
        _DWORD* v7; // rbx
        signed __int64 v8; // r15
        int* v9; // rdx
        int v10; // eax
        signed int v11; // eax
        int* v12; // rcx
        std::basic_ostream<char, std::char_traits<char> >* v13; // rax
        int* v14; // rcx
        unsigned __int64 v15; // rdx
        unsigned __int64 v16; // rdx
        unsigned __int64 v20; // rdi
        std::basic_ostream<char, std::char_traits<char> >* v25; // rax
        int v26; // [rsp+20h] [rbp-29h]
        __int128 Src; // [rsp+28h] [rbp-21h]
        int v28; // [rsp+38h] [rbp-11h]
        std::vector<int, std::allocator<int> > vectorInt1; // [rsp+40h] [rbp-9h]
        __int128 v30; // [rsp+58h] [rbp+Fh]
        char* v31; // [rsp+68h] [rbp+1Fh]
        __int128 v32; // [rsp+70h] [rbp+27h]
        char* v33; // [rsp+80h] [rbp+37h]

        v30 = 0i64;
        _mm_storeu_si128((__m128i*) & Src, _mm_load_si128((const __m128i*) & _xmm));
        v2 = 5i64;
        v28 = 5;
        array1 = (char*)operator new(20ui64);
        *(_QWORD*)&v30 = array1;
        endPtrOfArray1 = (signed __int64)(array1 + 20);
        v31 = array1 + 20;
        memmove_0(array1, &Src, 0x14ui64);
        *((_QWORD*)&v30 + 1) = array1 + 20;
        v32 = 0i64;
        vectorInt2 = operator new(0x14ui64);
        *(_QWORD*)&v32 = vectorInt2;
        v33 = (char*)(vectorInt2 + 5);
        *(_OWORD*)vectorInt2 = 0i64;
        vectorInt2[4] = 0;
        *((_QWORD*)&v32 + 1) = vectorInt2 + 5;
        _mm_storeu_si128((__m128i*) & vectorInt1, (__m128i)0i64);
        vectorInt1._Mypair._Myval2._Myend = 0i64;
        v6 = vectorInt2;
        do
        {
                std::basic_istream<char, std::char_traits<char>>::operator>>(*(_QWORD*)std::cin.gap0, v6);
                ++v6;
                --v2;
        } while (v2);
        v7 = array1;
        if (array1 != (char*)endPtrOfArray1)
        {
                v8 = (char*)vectorInt2 - array1;
                v9 = vectorInt1._Mypair._Myval2._Mylast;
                do
                {
                        v10 = *v7 * *(_DWORD*)((char*)v7 + v8);
                        v26 = *v7 * *(_DWORD*)((char*)v7 + v8);
                        if (v9 == vectorInt1._Mypair._Myval2._Myend)
                        {
                                std::vector<int, std::allocator<int>>::_Emplace_reallocate<int>(&vectorInt1, v9, &v26);
                                v9 = vectorInt1._Mypair._Myval2._Mylast;
                        }
                        else
                        {
                                *v9 = v10;
                                v9 = vectorInt1._Mypair._Myval2._Mylast + 1;
                                ++vectorInt1._Mypair._Myval2._Mylast;
                        }
                        ++v7;
                } while (v7 != (_DWORD*)endPtrOfArray1);
        }
        v11 = 2;
        v12 = vectorInt1._Mypair._Myval2._Myfirst;
        do
        {
                if (*v12 != v11)
                {
                        v25 = std::operator<<<std::char_traits<char>>(
                                *(std::basic_ostream<char, std::char_traits<char> >**)std::cout.gap0,
                                "You failed!");
                        std::basic_ostream<char, std::char_traits<char>>::operator<<(v25, std::endl<char, std::char_traits<char>>);
                        exit(0);
                }
                v11 += 2;
                ++v12;
        } while (v11 < 12);
        v13 = std::operator<<<std::char_traits<char>>(
                *(std::basic_ostream<char, std::char_traits<char> >**)std::cout.gap0,
                "You win!");
        std::basic_ostream<char, std::char_traits<char>>::operator<<(v13, std::endl<char, std::char_traits<char>>);
        system("pause");
        v14 = vectorInt1._Mypair._Myval2._Myfirst;
        if (vectorInt1._Mypair._Myval2._Myfirst)
        {
                v15 = 4i64
                        * ((_QWORD)((char*)vectorInt1._Mypair._Myval2._Myend - (char*)vectorInt1._Mypair._Myval2._Myfirst) >> 2);
                if (v15 >= 0x1000)
                {
                        v15 += 39i64;
                        v14 = (int*)*((_QWORD*)vectorInt1._Mypair._Myval2._Myfirst - 1);
                        if ((unsigned __int64)((char*)vectorInt1._Mypair._Myval2._Myfirst - (char*)v14 - 8) > 0x1F)
                                _invalid_parameter_noinfo_noreturn();
                }
                operator delete(v14, v15);
                _mm_storeu_si128((__m128i*) & vectorInt1, (__m128i)0i64);
                vectorInt1._Mypair._Myval2._Myend = 0i64;
        }
        if (vectorInt2)
        {
                v16 = 20i64;
                operator delete(vectorInt2, v16);
        }
        if (array1)
        {
                v20 = 20i64;
                operator delete(array1, v20);
        }
        return 0i64;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| weisuolong 发表于 2020-8-14 18:02
qzhsjz 发表于 2020-8-14 18:00
这就已经是反出来的C代码了,你还想要啥……

您看。我就想放到vs里能跑。这样我不是能看看。每一步怎么执行的,参数变化是啥。我能给点参数把算法逆向出来是不。哥,给瞧瞧成不
头像被屏蔽
Deuez 发表于 2020-8-15 13:03
qzhsjz 发表于 2020-8-14 18:00
这就已经是反出来的C代码了,你还想要啥……
头像被屏蔽
Deuez 发表于 2020-8-14 20:10
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| weisuolong 发表于 2020-8-15 09:12
Deuez 发表于 2020-8-14 20:10
IDA只能反编译成这样
这样的c语言伪代码已经够好看了的。

ida 可以动态调试 一段 伪代码? 能看传参啥的之类的么?
头像被屏蔽
Deuez 发表于 2020-8-15 13:05
提示: 作者被禁止或删除 内容自动屏蔽
m8024936 发表于 2020-8-22 14:28
Deuez 发表于 2020-8-14 20:10
IDA只能反编译成这样
这样的c语言伪代码已经够好看了的。

兄弟怎么样联系
头像被屏蔽
Deuez 发表于 2020-8-22 17:03
提示: 作者被禁止或删除 内容自动屏蔽
m8024936 发表于 2020-8-22 17:12
Deuez 发表于 2020-8-22 17:03
咋了?????

有个问题请教一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表