首页
社区
课程
招聘
修正双进程Armadillo 自动代码脚本
发表于: 2004-12-23 23:48 6716

修正双进程Armadillo 自动代码脚本

David 活跃值
20
2004-12-23 23:48
6716
// 双进程Armadillo 自动代码脚本0.2
// by Mr.David        
// www.chinadfcg.com

ask "堆栈中MutexName值是寄存器ECX请填1,否则填0"

cmp $RESULT, 0

je LEDX

repl 401000,#00000000000000#,#609C5133C05050#,7 //push XXX用push ecx代替

label2:

mov eip, 401000  //新建起源

add eip,7

asm eip,"call kernel32.CreateMutexA" //将当前指令修改为 call kernel32.CreateMutexA  

repl 40100C,#0000#,#9D61#,2

asm 40100E,"jmp kernel32.OpenMutexA" //将指令修改为 jmp kernel32.OpenMutexA  

mov eip, 401000 //新建起源

Msg "确定后清除临时工作代码"

run

gpa "OpenMutexA","kernel32.dll"  //清除断点

bc $RESULT

repl 401000,#??#,#00#,40 //毁尸灭迹

ret

LEDX:

repl 401000,#00000000000000#,#609C5233C05050#,7 //push XXX用push edx代替
jmp label2

附件:自动代码脚本.rar

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (17)
雪    币: 154
活跃值: (216)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
好贴一定要顶的。DFCG的当家是一定要支持的。
2004-12-24 09:54
0
雪    币: 216
活跃值: (203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不过代码不同,过程更详细啦。
2004-12-24 10:01
0
雪    币: 411
活跃值: (1160)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
4
最初由 imlym 发布
不过代码不同,过程更详细啦。


在哪里?

另外CopymemII一样可以用,并不重复
2004-12-24 10:31
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
5
其实如果你是用在 NT 系统上调试,不用设计得这样“守旧”,偶以前也差不多这样玩过,exec/ende 设计会显得清晰多!;)
2004-12-24 11:29
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
支持先!!
2004-12-24 11:59
0
雪    币: 411
活跃值: (1160)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
7
最初由 askformore 发布
其实如果你是用在 NT 系统上调试,不用设计得这样“守旧”,偶以前也差不多这样玩过,exec/ende 设计会显得清晰多!;)


1,照抄无意义

2,如果堆栈中MutexName值是寄存器ECX

exec/ende 设计会显得清晰多!请问如何智能识别?
2004-12-24 13:04
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
8
1。不是说要求你照抄

2。你可以变的吗,你的脚本可以担保一世通用吗?401000这个地址一世的版本都原本为00的地方?
MutexName如果你要按寄存器为准,就写寄存器,
如果以堆栈为准,就传送堆栈

至于智能识别,我也无法,版本不断更新,我也不喜欢玩这家伙,呵呵你最好将你大发现的经过的原理或做法告知我,我才能为你尝试 write out scrpit...

example:
……//这里写你设计的到达中断 CreateMutexA API的脚本

// 下面就是转换脚本,分:1比较,2转换,层次应该比较分明
var swap
mov swap, esp
add swap, 0C
mov swap, [swap] // 取得堆栈中 MutexName 的地址,如果以堆栈为准,那么从下行开始删除到 next_2 标签即可;如果以寄存器为准,就可作下面的比较
cmp ecx,swap //与 ecx 比较,下面具体如何取决你定
jne next_1
mov edi,ecx
jmp begin

next_1:
cmp edx,swap //与 edx 比较,下面具体如何取决你定
jne next_2
mov edi,edx
jmp begin

next_2:
mov edi,swap

begin: //转换的经典代码
  exec

    pushad
    push edi // must be MutexName
    push 0
    push 0
    CALL kernel32.CreateMutexA
    popad
    jmp kernel32.OpenMutexA //这一行应该可以省去的

  ende
//上面的代码就是在Script中运行从双进程到单进程的转换//

msg "Done turn along process!"
……//要退出就填 ret,要补充脚本的自己写
2004-12-24 14:13
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
use
hand....
2004-12-24 15:05
0
雪    币: 411
活跃值: (1160)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
10


以堆栈为主,抓紧时间学习.
2004-12-24 17:39
0
雪    币: 266
活跃值: (269)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
11
平安夜了:D
2004-12-24 18:15
0
雪    币: 411
活跃值: (1160)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
12
[QUOTE]最初由 askformore 发布
1。不是说

请教askformore一个问题

Acprotect1.10 Build123之Dephi语言篇,完美卸载XP9.13,啊达连连看,获取CODESIZE Code段范围太大,我只需要取401000处代码段,由于内存镜像断点范围问题,眼看它跑飞或陷入内存断点死循环,此时脚本已无能为力。

只需要取401000处代码段



var csize           

gmi eip, CODESIZE
mov csize, $RESULT  
log csize   

csize 值只要是Code都计算了,包括壳代码和其他区段的Code,真是晕啊
2004-12-24 18:25
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
13
这个不是我的问题,或是插件作者或是OD作者的问题;或者你不嫌弃麻烦,可以尝试写代码,先获取程序的基址,假设是 400000,定位到 PE 头,再定位到目录表或者区块之类的,接下来你会了吧,我没可能说得太详细,注意偏移量要使用准确 :p

可以看看一些 PE工具或PE说明

圣诞快乐:D :D :D
2004-12-24 22:21
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
14
PE Header里有个BaseOfCode,如果Script类似汇编,我可以示范一下:

mov eax, IMAGEBASE
mov ebx, eax       ; SAVE BASE
add eax, [eax+3Ch]
add eax, 0F8h
mov ecx, [eax+08h] ; CODE SIZE
mov edx, [eax+0Ch]
add edx, ebx       ; CODE START
2004-12-24 22:47
0
雪    币: 411
活跃值: (1160)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
15
mov eax, 400000
mov ebx, eax      
add eax, [eax+3C]
add eax, 0F8
mov ecx, [eax+08]
log ecx
mov edx, [eax+0C]
add edx, ebx     

log edx  

:(

mov eax, IMAGEBASE 语法就错误,我改为上面的代码,执行结果不对。
2004-12-25 14:40
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
16
你意思是...呵呵

不要用 log,如果你是跑 OS 的 exec/ende

log是不能嵌套到汇编里的

如果你是跑OS命令,不支持间接寻址的[eax+0C]

如果有需要,晚点给你写一下。。。

不过你先试试这样能否成功:

var cbase
var csize
gmi eip, CODEBASE
mov cbase,$RESULT
gmi cbase,CODESIZE
mov csize, $RESULT  
log csize //结果一样吗?
2004-12-25 15:18
0
雪    币: 411
活跃值: (1160)
能力值: ( LV9,RANK:810 )
在线值:
发帖
回帖
粉丝
17
通过volx的arm脚本和forgot的提示,我任意区段可以获取精确大小等信息了,谢谢各位。
2004-12-25 15:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
ask "堆栈中MutexName值是寄存器ECX请填1,否则填0"

cmp $RESULT, 0

je LEDX

repl 401000,#00000000000000#,#609C5133C05050#,7 //push XXX用push ecx代替

=============================
这一句OD无法识别是怎么回事?
2005-1-20 13:34
0
游客
登录 | 注册 方可回帖
返回
//