170514 逆向-IDC脚本一例

来源:互联网 发布:各国历年gdp数据 编辑:程序博客网 时间:2024/06/05 20:48

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

0 0
原创粉丝点击