IDC

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对程序的去花进行分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 姓名:高浪 【嵌牛导读】诚然云计算的时代已经到来! 云计算时代的发展对很多传统产业产生了冲击,传统IDC服务也已经...
    年和华阅读 6,809评论 0 2
  • 文/流年 趿着绣满倒影的鞋子 行走在被光阴丢弃的小径 夜的奢靡无孔不入 一双小脚被牢牢地牵引 那个男人 最终凝望着...
    聆听流年_b2a4阅读 2,828评论 0 0
  • 今天没有月亮,没有星星,老同学找我聊天,似乎过了很久,而我却浑然不知,已经过去那么远了,远到我们都变了,再也认不出...
    3d844c9c6929阅读 1,049评论 0 0
  • 读完无戒老师的《触摸不到的幸福》,心绪久久不能平静。那些农村生活的场景、那些画面好像都曾在我的生活里出现过。我是一...
    枣园草阅读 3,514评论 19 19
  • 苏幕遮·启轩窗 词|子丘 启轩窗,看晓月,夜色微凉,凉透芙蓉颊。翠袖含香长蹀躞,帘外风轻,轻似桃花雪。 暗销魂,徒...
    子丘1987阅读 3,047评论 4 15

友情链接更多精彩内容