能力值:
( LV4,RANK:50 )
|
-
-
2 楼
好贴一定要顶的。DFCG的当家是一定要支持的。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不过代码不同,过程更详细啦。
|
能力值:
( LV9,RANK:810 )
|
-
-
4 楼
最初由 imlym 发布 不过代码不同,过程更详细啦。
在哪里?
另外CopymemII一样可以用,并不重复
|
能力值:
( LV12,RANK:730 )
|
-
-
5 楼
其实如果你是用在 NT 系统上调试,不用设计得这样“守旧”,偶以前也差不多这样玩过,exec/ende 设计会显得清晰多!;)
|
能力值:
( LV9,RANK:170 )
|
-
-
6 楼
支持先!!
|
能力值:
( LV9,RANK:810 )
|
-
-
7 楼
最初由 askformore 发布 其实如果你是用在 NT 系统上调试,不用设计得这样“守旧”,偶以前也差不多这样玩过,exec/ende 设计会显得清晰多!;)
1,照抄无意义
2,如果堆栈中MutexName值是寄存器ECX
exec/ende 设计会显得清晰多!请问如何智能识别?
|
能力值:
( 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,要补充脚本的自己写
|
能力值:
( LV5,RANK:60 )
|
-
-
9 楼
use
hand....
|
能力值:
( LV9,RANK:810 )
|
-
-
10 楼
以堆栈为主,抓紧时间学习.
|
能力值:
( LV9,RANK:210 )
|
-
-
11 楼
平安夜了:D
|
能力值:
( 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,真是晕啊
|
能力值:
( LV12,RANK:730 )
|
-
-
13 楼
这个不是我的问题,或是插件作者或是OD作者的问题;或者你不嫌弃麻烦,可以尝试写代码,先获取程序的基址,假设是 400000,定位到 PE 头,再定位到目录表或者区块之类的,接下来你会了吧,我没可能说得太详细,注意偏移量要使用准确 :p
可以看看一些 PE工具或PE说明
圣诞快乐:D :D :D
|
能力值:
(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
|
能力值:
( 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 语法就错误,我改为上面的代码,执行结果不对。
|
能力值:
( 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 //结果一样吗?
|
能力值:
( LV9,RANK:810 )
|
-
-
17 楼
通过volx的arm脚本和forgot的提示,我任意区段可以获取精确大小等信息了,谢谢各位。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
ask "堆栈中MutexName值是寄存器ECX请填1,否则填0"
cmp $RESULT, 0
je LEDX
repl 401000,#00000000000000#,#609C5133C05050#,7 //push XXX用push ecx代替
=============================
这一句OD无法识别是怎么回事?
|
|
|