实验吧 证明自己吧 (真心详解)

最近了解一个新工具 但是还是不怎么会用,就会一个ida的f5 大法直接希望能出来伪c代码 然后参考了一些大牛们的博客 然后和大家们说一说自己现在 用ida做的一道题 ~~ 

先打开 ida  然后shift+f12 然后看见


 看见good 就是 判断成功的标志 然后我们就 发现了 这个的地址是 407048

然后按G来寻找寻找地址 ,然后开始ida的f5大法 然后发现了


然后 按下 空格键 看之间的调用 发现了


明显看见了这这上面的东西 就是判断 然后 点开上面的格 发现了 


可以知道 这个 401060函数是一个关键 它可以直接来看 是 a good the key is yo  还是 a you dontguessit  所以 要进入 401060 然后 我们发现

扫描二维码关注公众号,回复: 1455067 查看本文章


然后我们 可以基本上 确定这个就是我们要的 加密算法了 ,先看上面的代码  一开始我也是头皮发麻 然后我去问了c++老师(对 ,就是c++老师 这个老师当年考研可是120多的大佬,平均分60多,省内第一),然后 可以分析v5 v6 v7 v8 地址是在一起的 然后 他们一开始进行的操作是 对0x20进行异或 然后 那异或的值减5 和 里面的值进行比较 那么我们进行反推过去 就是先减5 然后 异或0x20 (他们是强行转化byte进行比较的)也就是说 一个字节 2位16进制的数来比较的 然后接下来就是找到 加密后的值就行了

然后点进 v5的地址


然后就是 68 57 19 48  50 6E 58 78 54 6A 19 58  5E 06  (00 00是结束的标志)取出 前14个字节就好 

然后下面是 c++的代码

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <queue>
#include <string.h>
using namespace std;
//68 57 19 48  50 6E 58 78 54 6A 19 58  5E 06  0
int main()
{
    int s;
    string ss;
    ss.clear();
    while(~scanf("%p",&s))
    {
          if(s==0)
            break;
          ss+=(s-5)^(0x20);
    }
     cout<<ss<<endl;
    return 0;
}

 然后运行结果就是



 应该没人看 更别说转载了 要是转载请注明出处

猜你喜欢

转载自blog.csdn.net/qq_41071646/article/details/80206496
今日推荐