吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6259|回复: 6
收起左侧

去花的idc

[复制链接]
风吹屁屁凉 发表于 2008-8-31 13:05
Form:pediy.comjjnet


无意看了一个e语言的东东, e语言自带了很多花, 写个脚本在IDA中删除
使用很简单, 只需要把main函数的花串改掉就行。
patchspec("f8 73 01", 4, begin, end);
第1个参数是花串, 第2个参数是patch90的长度, 后面是开始位置和结束位置

// begin copy here
// author jjnet
// file: flowerpatch.idc

static _hexval(str)
{
auto v;
v = ord(str);
if (0x30<=v && v<=0x39)
return v-0x30;
if (&#39;a&#39;<=v && v<=&#39;z&#39;)
return v-&#39;a&#39;+10;
if (&#39;A&#39;<=v && v<=&#39;Z&#39;)
return v-&#39;A&#39;+10;
return 0;
}


static hexval(str)
{
return (_hexval(str)<<4) + _hexval(substr(str, 1, 2));
}

static format_hexstr(str)
{
auto lens, i, b, ret;
i = 0;
lens = strlen(str);
ret = "";

while(i+2 <= lens)
{
if (&#39; &#39; == ord(substr(str, i, i+1)) )
{
i = i+1;
continue;
}
b = hexval(substr(str, i, i+2));
if (&#39;\\&#39; == b)
{
ret = ret + char(&#39;\\&#39;)+char(&#39;\\&#39;);
}
else if (0 == b)
{
ret = ret + char(&#39;\\&#39;)+char(1);
}
else
{
ret = ret + char(b);
}
i = i+2;
}
return ret;
}

static fmtstrlen(fmtstr)
{
auto i, lens, ret;
lens = strlen(fmtstr);
i = 0;
ret = 0;
while(i<lens)
{
if (&#39;\\&#39; == (ord(substr(fmtstr, i, i+1))&0xff) )
{
i=i+2;
}
else
{
i=i+1;
}
ret = ret+1;
}
return ret;
}



static patchspec(hexstr, patchmany, begin, end)
{
auto fmtstr, fmtstr_len, i, j, count, c1, c2;
fmtstr = format_hexstr(hexstr);
fmtstr_len = fmtstrlen(fmtstr);
count = 0;

while(begin+fmtstr_len<=end)
{
j = 0;
for(i=0; i<fmtstr_len; ++i)
{
c1 = Byte(begin+i);
c2 = ord(substr(fmtstr,j,j+1))&0xff;
if (&#39;\\&#39; == c2)
{
j=j+1;
c2 = ord(substr(fmtstr,j,j+1))&0xff;
if (1 == c2) c2 = 0;// escape charset
}
if (c1 != c2) break;
j = j+1;
}
if (i==fmtstr_len) // found
{
for(i=0; i<patchmany; ++i)
{
MakeUnkn(begin+i,0);
PatchByte(begin+i,0x90);
MakeCode(begin+i);
}
Message("%x\n", begin);
begin = begin+patchmany;
count = count+1;
}
else // not found
{
begin = begin+1;
}
}

Message("total patched: %d\n", count);
}

static main()
{
auto begin, end;
begin = 0xd00000;
end = 0xe00000;

// e语言带的
patchspec("f8 73 01", 4, begin, end);
patchspec("f9 72 01", 4, begin, end);
patchspec("e8 00 00 00 00 83 04 24 06 c3", 11, begin, end);
patchspec("E9 00 00 00 00", 5, begin, end);
patchspec("EB 01", 3, begin, end); //会不会误patch?
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小黑冰 发表于 2008-8-31 13:10
什么鸟啊  看不懂啊```````楼主真可恶```
guoyonghao 发表于 2008-8-31 14:11
小生我怕怕 发表于 2008-8-31 14:55
guoyonghao 发表于 2008-9-1 08:19
顶个帖吧!!!!!!!1 [s:17]
zailai8888 发表于 2010-8-5 02:11
学习下大牛的杰作!
3663790 发表于 2010-8-5 06:51
我只想知道楼主是怎么发帖不带分类类型的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 07:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表