170514 逆向-IDC脚本一例

本文介绍了如何使用IDC脚本进行加密代码的解密,通过分析特定代码段,展示了利用IDC模拟解密过程。解密方法涉及Self Modifying Code(SMC)技术,通过异或运算还原加密数据。在IDA环境中,使用IDC脚本执行解密并通知IDA重新分析解密后的代码。
摘要由CSDN通过智能技术生成

1625-5 王子昂 总结《2017年5月14日》 【连续第225天总结】

A. 加密与解密 IDC脚本的使用 100%

B. IDC可以用来通过处理代码提取或处理信息

一些特殊反汇编任务需要IDC的协助。

比如对代码段加密的程序,可以先用IDC先写一段解密的代码,解密后再进行反汇编

eg:

push ebp

mov ebp,esp

sub esp,8

call 401080

call 401060

xor eax,eax

mov esp,ebp

pop ebp

retn 10h

分析401060处的子程序发现没有意义

再分析401080,发现可以解密401060处的代码

mov eax,offset loc_#1060

mov bl,[eax]

xor bl, 1

mov [eax], bl

inc eax

cmp eax,00401074

jg short locret_401096

jmp short loc_401085

retn

这样的方法叫做SMC(Self Modifying Code)技术,即自己修改自己的代码。只有在程序运行时,才会由程序在某处运行一段还原代码来解密这段加密数据,再执行。

本段解密方法就是把每个数据与1做xor(异或)运算

使用IDC脚本的模拟解密代码为:

#include <idc.idc>

//from:解密代码起始地址,size:代码长度,key:此处值为1

static decrypc(from,size,key){

auto i,x;

for(i=0;i<size;i=i+1){

x=Byte(from);

x=(x^key);

PatchByte(from,x);

from=from+1;

}

}

单击菜单可以将这段代码载入IDA中,再打开IDC命令执行窗口,以十六进制形式输入命令decrypte(0x00401060,0x15,0x1); 即可

最后记得通知IDA重新分析这段代码

C. 明日计划

加密与解密 IDA

PYQT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值