附件:Arm.rar 

由于人懒,无心机整理,大概说一下用法:
有5个脚本,顺序使用,就可修正 iat 和 它的 call 地址
首先要申请足够的内存,我一一般申请 20000 h
一直使用脚本一的OD设置

1.运行
2.记录 API 和 CALL 地址
3.进行模块识别 (此脚本会比较花时间,因为我没有用汇编,正如罗聪说的它的设计注定了它的慢,我不想也没法,如果你这里出了意外,不关我事,我也试过,同样的脚本,有不一样的运行结果,理论是没问题的)
4.排序 Call 表 和 要与Api排序 一挚
5.如果上面的步骤进行顺利,就要保存好,或直接或以后用此脚本修复

大家对照我举的地址值去填你的实际地址,Enjoy!



想更新bug的,又出现上传不了附件
OS: WinXP,OllyScript0.92,Ollydbg110_DIY版,忽略所有异常

大家尽量用在看雪工具分论坛推荐的最新DIY 抗调试版 的 Ollydbg,要不你也可以自己 Diy

为了纪念今日 2005年4月20日 我家里的“老鼠笼” 成功捕获第一只老鼠,因为“老鼠笼”已经买了一年多,未捉到过一只老鼠,话不多说,它太可恶了,经常光顾,食我蕃薯,扰我夜寝,掌印无处,糞尿无数,今日真是大快人心,特别作了补充注释和找出了 脚本3 bug 的原因。

将脚本分开成模块了,主要是出于方便维护,和提高运行效率,如果全写成脚本,没错,就是慢,所以加入了汇编,以提高速度,我的机器本来就是慢,现在是望半G还不可及,没半个钟别想跑完,正所谓时间就是金钱,要珍惜呀。

使用脚本前,请先好申请内存块,一般在加载程序运行前,用动态申请的地址是一样的,比较固定,运行后就不一定了,这是我调试的心得。

我不是对arm4.xx有特别的研究,我没有加壳的主程序,就算有我也未必会用,如果你使用中出了问题,请以  Sothink SWF Decompiler MX 2005a Build 50318 作为参考,作一次使用,如果都出同样的脚本问题,可以问我,我有时间的话会尽量给你解答,它的
CC修复是参考 snoop 的汉化版进行人工修复,一点技术含量都没有,不要问我这个,其它的免问吧。。。。

我这里脚本的举例内存申请具体是
地址为:1290000
大小为:20000

Written by Askformore

Enjoy!

脚本3存在的bug如下修正:
//根据api所属模块排序,并记录模块个数
//我终于找到了为何此脚本有时能成功获取所有api地址的模块,有时即无法获取的原因
//记得在运行此脚本前先,请先去点内存窗口,让标记红色的模块再次加载,这样才能让此脚本运行无误,正确判断API
//修正了4.19日匆忙加记录模块个数kinds的bug(死循环),大头虾 -_- !
var pm
var mb
var ocall
var oapi
var napi
var ncall
var flag
var api
var kinds


mov ocall, 12A0000  //上一个脚本的Log Call 入口
mov oapi, 12A9000  //上一个脚本的Log API入口
mov napi, 1299000  //新 api
mov ncall, 1290000 //新 call
mov flag, 12A3200  //留给下一个脚本计算索引用
mov mb, 12AC200    //产生模块表
mov kinds, 0       //模块个数
mov pm, mb

lb1:
cmp [oapi],0
je done
mov api, [oapi]
gmi api, MODULEBASE
cmp $RESULT, 0
je err
mov pm, mb
cmp [pm], 0
je lb3

lb2:
cmp [pm], $RESULT
je lg
cmp [pm], 0
je lb3
add pm,4
jmp lb2

lb3:
mov [pm], $RESULT

lg:
sub pm, mb
shr pm, 2
inc pm
mov [flag], pm
add flag, 4
add oapi,4
jmp lb1


done:
cmp [mb], 0
je end
add mb, 4 //忘了加这个
inc kinds
jmp done

err:
msg "Abort! Only just Got Nothing!"
end:
log kinds
ret