首页
社区
课程
招聘
[旧帖] [求助]为什么我的OllyICE没识别出变量名 0.00雪花
2007-10-13 10:31 6105

[旧帖] [求助]为什么我的OllyICE没识别出变量名 0.00雪花

2007-10-13 10:31
6105
自己做汇编练习时写的程序.用OD调试如下
00401010  |> \FE05 00404000 inc byte ptr [404000]
00401016  |.  2905 0C404000 sub [40400C],eax
0040101C  |.  66:8B1D 19404>mov bx,[404019]
00401023  |.  66:291D 13404>sub [404013],bx
0040102A  |.  66:8305 1C404>add word ptr [40401C],1
00401032  |.  66:8305 2B404>add word ptr [40402B],1
0040103A  |.  66:B8 F07F    mov ax,7FF0
0040103E  |.  04 10         add al,10
00401040  |.  80C4 01       add ah,1
00401043  |.  66:83C0 02    add ax,2
00401047  |.  66:F71D 37404>neg word ptr [404037]
0040104E  |.  66:011D 37404>add [404037],bx
00401055  |.  66:A1 3740400>mov ax,[404037]
0040105B  |.  66:2B05 3D404>sub ax,[40403D]
00401062  |.  B0 09         mov al,9
00401064  |.  04 0A         add al,0A
00401066  |.  6A 00         push 0                                   ; /ExitCode = 0
00401068  \.  E8 17000000   call 00401084                            ; \ExitProcess

同样的程序我用IDA载入后却能显示出常量名.如下
main proc near
inc     val11
sub     val23, eax
mov     bx, val34
sub     val32, bx
add     val42, 1
add     val54, 1
mov     ax, 7FF0h
add     al, 10h
add     ah, 1
add     ax, 2
neg     val72
add     val72, bx
mov     ax, val72
sub     ax, val74
mov     al, 9
add     al, 0Ah
push    0               ; uExitCode
call    _ExitProcess@4  ; ExitProcess(x)
main endp

请教.怎么样才能让OD识别出常量名

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (13)
雪    币: 152
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sbjofjhh 2007-10-13 10:56
2
0
问老鸟吧.可能是加密了~
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小晴 2007-10-13 11:00
3
0
不可能加密.我自己做习题时写的
这是源码
TITLE Program Template
;程序的描述4.2.3习题
;作者
;创建日期
;版本
;这一章的习题是这样理解的.前面的参数的值更改后应不影响后面习题.
;日期:                        修改者
INCLUDE Irvine32.inc
.data
        val11        BYTE        10h
        val12        WORD        8000h
        val13        DWORD        0FFFFh
        val14        WORD        7FFFh
        val21        BYTE        10h
        val22        WORD        8000h
        val23        DWORD        0FFFFh
        val24        WORD        7FFFh
        val31        BYTE        10h
        val32        WORD        8000h
        val33        DWORD        0FFFFh
        val34        WORD        7FFFh
        val41        BYTE        10h
        val42        WORD        8000h
        val43        DWORD        0FFFFh
        val44        WORD        7FFFh
        val51        BYTE        10h
        val52        WORD        8000h
        val53        DWORD        0FFFFh
        val54        WORD        7FFFh
        val61        BYTE        10h
        val62        WORD        8000h
        val63        DWORD        0FFFFh
        val64        WORD        7FFFh
        val71        BYTE        10h
        val72        WORD        8000h
        val73        DWORD        0FFFFh
        val74        WORD        7FFFh
       
.code
main PROC
;1.写一条val2加1的指令.
        inc        val11
;2.写一条从val3中减掉EAX的指令.
        sub        val23 ,eax
;3.写一条或多条指令从var2中减去val4.
        mov        bx        ,val34
        sub        val32        ,bx
;4如果使用add指令对val2加1,那么进位标志和符号标志的什分别是什么?
        add        val42        ,1        ;CF=0,SF=0,OF=0
;5如果使用add指令对val4加1,那么进位标志和符号标志的值分别是什么?
        add        val54        ,1        ;CF=0,SF=1,OF=1
;6每条指令执行后,在提示处写下进位标志、符号标志、零标志和溢出标志的值:
        mov        ax ,7ff0h       
        add        al ,10h                ;a.        CF=1        SF=0        ZF=1        OF=0
        add        ah ,1                ;b.        CF=0        SF=1        ZF=0        OF=1
        add        ax ,2                ;c.        CF=0        SF=1        ZF=0        OF=0
;7用汇编语言实现下面的表达式:AX=(-val72+BX)-val74
        neg        val72
        add        val72,BX
        mov        AX,val72
        sub        ax,val74
;12挑战:写两条连续的指令来同时设置进位标志和溢出标志位的值
        mov        al,1001b
        add        al,1010b
        exit
main ENDP

        ;(在此插入其他子程序)
END main
雪    币: 668
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mclkings 2007-10-13 11:02
4
0
[QUOTE=小晴;370237]自己做汇编练习时写的程序.用OD调试如下
00401010  |> \FE05 00404000 inc byte ptr [404000]
00401016  |.  2905 0C404000 sub [40400C],eax
0040101C  |.  66:8B1D 19404>mov...[/QUOTE]
不可以吧?
关注..学习。。。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小晴 2007-10-13 11:08
5
0
有点邪门,不是说源程序在编译时常量,变量名之类的已经被转化为地址了吗.那么IDA怎么在反汇编时能够识别出常量名.
奇怪....
为什么OLLYICE又不能了呢....
高手快点出现吧.
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小晴 2007-10-13 17:01
6
0
明白了,"Option选项"-->"Debugging Options调试选项"-->"disasm反汇编"-->"Show symbolic addresses显示符号地址"-->"OK确定"

高手见笑了..我实在太菜了,这个都不知道
雪    币: 3758
活跃值: (3212)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
曾半仙 12 2007-10-13 17:11
7
0
那是作为调试信息存储在可执行文件体内的, IDA和OD都可以读取出来
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小晴 2007-10-13 17:22
8
0
,我关了OD.再打开后发现.选上那个选项也不行了.刚才还可以的.怎么回事
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
charks 2007-10-14 06:41
9
0
只有调试编译下才有吧. 如果你的程序发布了,我想随便那个调试工具都不会认出来了
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yingyue 2007-10-14 09:23
10
0
OD 如果有 IDA 一样的分辨能力,IDA 就要关门了
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nsmile 2007-10-14 10:41
11
0
ida ...变量名被隐藏了?还是你设置的问题?
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小晴 2007-10-14 12:16
12
0
是这样的.
我的用MASM615编译程序的..
并且用了输出调试信息的选项
ml.exe  -I"C:\Masm615\INCLUDE" -Zi -c -Fl -coff
link32.exe /libpath:"C:\Masm615\LIB" /SUBSYSTEM:CONSOLE /DEBUG $(FileNameNoExt).obj irvine32.lib kernel32.lib
红字部分都输出了调试信息.并且IDA可以顺利读取.我看OD的官方说明有这样的句子"源码级调试: OllyDbg 可以识别所有 Borland 和 Microsoft 格式的调试信息。这些信息包括源代码、函数名、标签、全局变量静态变量。有限度的支持动态(栈)变量和结构。"
按道理说它是可以把我的常量名显示出来的.并且曾经有一次OD显示出来了常量名..之后我再试就没出现过.一定是我哪里的设置有问题?谁能告诉我问题出在哪里
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小晴 2007-10-14 12:17
13
0
我做实验时的EXE文件
上传的附件:
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小晴 2007-10-14 23:14
14
0
求人不如求己.仔细翻了OD的帮助文件,找到了答案,CTRL+O扫描目标文件.即会显示常量名.谢谢各位朋友的热心回复,谢谢TT翻译小组的帮助文件.
游客
登录 | 注册 方可回帖
返回