可以说我想查找所有

MOV EAX, 1234h
MOV WORD PTR[EBP+ADDR], AX


,但它并不总是EAXEBP+ADDR

我怎么像这样通配搜索

MOV ???, 1234h
MOV WORD PTR[???+ADDR], ??


我试过了

MOV ANY, 1234h
MOV WORD PTR[ANY+ADDR], ANY

MOV ?, 1234h
MOV WORD PTR[ANY+ADDR], ?

MOV r32, 1234h
MOV WORD PTR[r32+ADDR], r16


这些模式都不能在Ollydebugger中编译吗? (我想避免使用脚本来完成这样一个简单的任务。

下面的代码可以编译和运行,



MOV r32, 0x1234


#1 楼

ollydbg 1.10右键单击Search For All Sequences wildcard MOV R32,CONST

calc.exe xp sp3 32位vm的结果

Found sequences
Address                    Disassembly                            Comment
01001004 <&ADVAPI32.RegQu  DD      ADVAPI32.RegQueryValueExA      (Initial CPU selection)
010019E5                   MOV     EDI, OFFSET calc.ghnoParNum    01014C08=OFFSET calc.ghnoParNum
010019EF                   MOV     EDI, OFFSET calc.ghnoPrecNum   01014C70=OFFSET calc.ghnoPrecNum
01001A6B                   MOV     EBX, calc.010012A0             UNICODE "intl"
01001D51                   MOV     ESI, 130
01001DDF                   MOV     EAX, OFFSET calc.szBlank       01014DA4=OFFSET calc.szBlank
01001DE6                   MOV     EAX, calc.01001264             UNICODE " M"
01001F51 calc.WinMain      MOV     EAX, calc.010128EE             10128EE=calc.010128EE
01001FED                   MOV     ESI, 400
010020A2                   MOV     EAX, calc.010020A8             010020A8=calc.010020A8
010020D5                   MOV     EAX, 80000000
0100210A                   MOV     EDI, OFFSET calc.szAppName     UNICODE "SciCalc"


组合通配符

MOV WORD PTR [R32 + CONST],R16

Found sequences
Address        Disassembly                                     Comment
01001F6E       MOV     WORD PTR SS:[EBP-FC], BX
01002234       MOV     WORD PTR DS:[EAX+EDX*2+14], DI
0100230D       MOV     WORD PTR DS:[ESI+EAX*2+14], DI
0100231C       MOV     WORD PTR DS:[ESI+EAX*2+A4], DI
01002358       MOV     WORD PTR SS:[EBP+EDI*2-108], AX
01002376       MOV     WORD PTR SS:[EBP+EDI*2-108], AX
01002470       MOV     WORD PTR DS:[ECX+EAX*2+C], BX
010024AF       MOV     WORD PTR DS:[ECX+ESI*2+C], BX
0100251D       MOV     WORD PTR DS:[EAX+ECX*2+14], DX
010025AA       MOV     WORD PTR DS:[ECX+EAX*2+14], DX
0100404D       MOV     WORD PTR SS:[EBP+EAX*2-74], BX
010056E0       MOV     WORD PTR SS:[EBP+8], AX
010056F4       MOV     WORD PTR SS:[EBP+A], BX
01012475 calc  PUSH    70                              (Initial CPU selection)


编辑以评论注释

dont need the WORD ptr只是在做[R32 + CONST],R16
将获取相同的结果
如果提供implicitly knows R!6 means word ptr,则代替r16
ollydbg r32 ollydbg将其解码为DWORD PTR

Found sequences, item 1
 Address=010017E7
 Disassembly=MOV     DWORD PTR SS:[EBP-2C], ESI


提供mov [CONST} , R8并返回all BYTE PTR序列

Found sequences, item 1
 Address=0100AC75
 Disassembly=MOV     BYTE PTR DS:[ftrueinfinite], BL


评论


那么我如何结合它们呢?我不知道WORD PTR的CONST是局部变量,我认为,OH CONST是任何值的关键字,请不要在所有序列搜索中同时注意两行。我明白了,非常感谢

– SSpoke
14年5月19日在19:43



您只需执行mov [R32 + CONST]就不需要WORD ptr,R16将获取相同的结果ollydbg隐式知道R!6表示单词ptr而不是R16(如果您提供r32)ollydbg会将其解码为DWORD PTR找到的序列,项目0地址= 010017E7反汇编= MOV DWORD PTR SS:[EBP-2C],ESI

– blabb
2014年5月19日19:59

#2 楼

没关系,这是行不通的..它必须在两个区域都找到常量才能找到WORD PTR ..事实并非如此。

我以不同的方式解决了它并不需要命令序列,

所有常量的工作原理几乎相同(尽管看起来更多,而且已全部排序,所以如果我要查找的话,我会在下面看到WORD PTR。 >