IDC

2019-02-02  本文已影响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对程序的去花进行分析

上一篇 下一篇

猜你喜欢

热点阅读