IDC

作者: 喝豆腐脑加糖 | 来源:发表于2019-02-02 22:50 被阅读0次

    ida中的idc作为类似c语言的脚本语言,非常好用。
    使用学习方法参考。ida权威指南-扩展ida的功能

    写段代码,使用idc进行求解

    #include "stdafx.h"
    
    #include <stdio.h>
    #include <string.h>
    
    int mew(char *buff)
    {
        int i;
        int flag[11] = { 126, 118, 100, 76, 96, 124, 76, 112, 124, 124, 127};
        for (i = 0; i < 11; i++)
        {
            if (buff[i] != flag[i])
            {
                printf("wrong");
                return -1;
            }
            else{
                printf("1 ~");
            }
        }
        return 0;
    }
    int main()
    {
        char buff[12];
        int i;
        memset(buff, 0, sizeof(char) * 12);
        scanf_s("%s", buff, sizeof(buff));
        for (i = 0; i < 11; i++) {
            buff[i] = buff[i] ^ 0x13;   // flag is  : mew_so_cool
        }
        mew(buff);
        return 0;
    }
    
    图片.png

    ida载入发现11个数据,有八个数据使用了xmm0寄存器取出

    图片.png

    xmm0是128位寄存器,16字节
    所以每次从此处每个数据大小为4字节
    使用Dword 从虚拟地址每次取出一个双字值

    这11个数据需要分两次取出,注意小端序

    auto from1 = 0x00402150;
    auto from2 = 0x00402140;
    auto i, x;
    
    for(i = 0; i < 4; i++){
        x = Dword(from1);    
        Message("%s", x ^ 0x13); //类似printf函数
        from1 = from1 + 4;
    }
    for(i = 0; i < 4; i++){
        x = Dword(from2); 
        Message("%s", x ^ 0x13);
        from2 = from2 + 4;
    }
    Message("%s", 0x1D^0x42);
    Message("%s", 0x01^0x42);
    
    图片.png

    使用idc是去掉注释,idc不支持“//”的方法

    图片.png

    之后在命令框输入脚本

    图片.png

    后续使用idc对程序的去花进行分析

    相关文章

      网友评论

          本文标题:IDC

          本文链接:https://www.haomeiwen.com/subject/kbvcjqtx.html