首页
社区
课程
招聘
[求助]如何在VC编辑框中显示十六进制数据
发表于: 2005-2-2 17:07 13801

[求助]如何在VC编辑框中显示十六进制数据

2005-2-2 17:07
13801
请问高手,如何在VC的编辑控件中显示十六进制的注册码?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
2
十六进制的注册码?
不是吧?注册码是ASCII码的字符串吧?
2005-2-2 17:28
0
雪    币: 214
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
注册码的是一堆十六进制数。我想知道有没有简单的方法把它直接显示出来,而不用转换成字符串。
谢谢
2005-2-2 17:35
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
4
显示是可以,可是用户最终要输入的还是字符串啊!
2005-2-2 17:39
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
5
比如注册码是3a
它的十六进制表示是33 61,按你说的直接显示十六进制的话就是3361,但是用户必须要输入3a才能注册成功。
2005-2-2 17:43
0
雪    币: 229
活跃值: (168)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
如果找不到就DIY吧
2005-2-2 17:52
0
雪    币: 214
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
比如说,我得到的注册码是:57B412C。
我是通过数学方法计算出来的,它本身是一个数。就等于十进制的91963692。我当然是应该输入57B412C了。可问题是,在我的算法里面,57B412C是一个数,一个十六进制的数。我用UpdateData来显示的时候,它自动就转换成了十进制的了。所以,我想问一下怎么样才能直接就在编辑控件里把57B412C显示出来。
2005-2-2 17:53
0
雪    币: 138
活跃值: (108)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
include wap32.inc
extrn _wsprintfA: proc
extrn MessageBoxA: proc
extrn ExitProcess: proc

.386
.model flat,stdcall
.data
   Msg00 db '异常处理信息...',0
   Msg01 db '函数原形:',0dh,0ah
         db 'Exception PROC uses ebx esi edi,pRecord,pFrame,pContext,pDispatch',0dh,0ah,0ah
         db '详细资料...',0dh,0ah,0ah
         db '异常处理程序返回地址= %8.8x',0dh,0ah,0ah
         db '<参数1>pRecord= [%8.8x]   异常部分记录',0dh,0ah
         db '   ExceptionCode= %8.8x  ExceptionFlags= %8.8x  ',0dh,0ah,0ah
         db '<参数2>pFrame= [%8.8x]   一些指针,本程序不关心',0dh,0ah,0ah
         db '<参数3>pContext=[%8.8x]   发生异常时候的常用寄存器值',0dh,0ah,0ah
         db '   EAX= %8.8x  EBX= %8.8x  ECX= %8.8x  EDX= %8.8x',0dh,0ah
         db '   ESI= %8.8x  EDI= %8.8x  EBP= %8.8x  ESP= %8.8x',0dh,0ah         
         db '   DS= %4.4x  ES= %4.4x  FS= %4.4x  GS= %4.4x',0dh,0ah
         db '   SS: ESP=%4.4x: %8.8x  CS: EIP=%4.4x: %8.8x',0dh,0ah,0ah
         db '<参数4>pDispatch= [%8.8x]   X86机器未使用',0dh,0ah,0ah
         db '发生异常的代码 CS:[EIP]    <按字节顺序显示>',0dh,0ah,0ah
         db  '%8.8x %8.8x %8.8x %8.8x %8.8x %8.8x %8.8x %8.8x',0dh,0ah,0ah
         db '发生异常的堆栈 SS:[ESP]    <按双字顺序显示>',0dh,0ah,0ah
         db '%8.8x %8.8x %8.8x %8.8x %8.8x %8.8x %8.8x %8.8x',0dh,0ah,0ah,0
   Msg02 db '程序正常终止',0
   Msg03 db '应用程序提示',0
   MsgBuff db 200h dup(0)
   

.code

Start:
   mov   eax,offset MyExceptionProc
   push  eax
   mov   eax,fs:[0]
   push  eax
   mov   fs:[0],esp  ;//挂接异常处理链
CreateException:
   int  3  ;//产生中断异常
   ;mov  ds:[0],eax;//产生内存访问异常
   ;cli    ;//特权指令异常
InstructionSize=$-OFF CreateException
   call  MessageBoxA,NULL,OFF Msg02,OFF Msg03,NULL
   call  ExitProcess,0
MyExceptionProc proc uses ebx esi edi,pRecord,pFrame,pContext,pDispatch
   mov   edi,esp
   mov   ebx,pContext
   mov   ebx,[ebx.cx_Esp]
   mov   ecx,8
LoopPushStack:
   mov   eax,[ebx+7*4]  ;//不调整显示顺序
   push  eax
   sub   ebx,4
   loop  LoopPushStack
   mov   ebx,pContext
   mov   ebx,[ebx.cx_Eip]
   mov   ecx,8
LoopPushCode:
   mov   ax,[ebx+7*4]  ;//调整显示顺序
   xchg  ah,al
   shl   eax,16
   mov   ax,[ebx+2]
   xchg  ah,al   
   push  eax
   sub   ebx,4
   loop  LoopPushCode
   mov   ebx,pDispatch
   push  ebx
   mov   ebx,pContext   
   mov   eax,[ebx.cx_Eip]
   push  eax
   mov   eax,[ebx.cx_SegCs]
   and   eax,0ffffh
   push  eax   
   mov   eax,[ebx.cx_Esp]   
   push  eax
   mov   eax,[ebx.cx_SegSs]
   and   eax,0ffffh
   push  eax   
   mov   eax,[ebx.cx_SegGs]
   and   eax,0ffffh
   push  eax   
   mov   eax,[ebx.cx_SegFs]
   and   eax,0ffffh
   push  eax      
   mov   eax,[ebx.cx_SegEs]
   and   eax,0ffffh
   push  eax      
   mov   eax,[ebx.cx_SegDs]
   and   eax,0ffffh
   push  eax      
   mov   eax,[ebx.cx_Esp]
   push  eax   
   mov   eax,[ebx.cx_Ebp]
   push  eax   
   mov   eax,[ebx.cx_Edi]
   push  eax   
   mov   eax,[ebx.cx_Esi]
   push  eax   
   mov   eax,[ebx.cx_Edx]
   push  eax   
   mov   eax,[ebx.cx_Ecx]
   push  eax   
   mov   eax,[ebx.cx_Ebx]
   push  eax   
   mov   eax,[ebx.cx_Eax]
   push  eax
   push  ebx
   mov   ebx,pFrame
   push  ebx
   mov   ebx,pRecord
   mov   eax,[ebx.ExceptionFlags]
   push  eax
   mov   eax,[ebx.ExceptionCode]
   push  eax
   push  ebx
   mov   ebx,[ebp+4]
   push  ebx
   call  _wsprintfA,OFF MsgBuff,OFF Msg01
   call  MessageBoxA,NULL,OFF MsgBuff,OFF Msg00,NULL
   mov   esp,edi
   mov   ebx,pContext
   add   [ebx.cx_Eip],InstructionSize
   mov   eax,ExceptionContinueExecution
   ret   
MyExceptionProc endp
end Start

这段代码好象对你有帮助
看这句是不是你想要的
   call  _wsprintfA,OFF MsgBuff,OFF Msg01
这个就有些类试c中printf
定义的时候好象要注意
2005-2-2 18:16
0
雪    币: 214
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
非常感谢!!!
2005-2-2 18:35
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
10
哦,明白了。是这样,你是直接把用91963692赋值给字符串了吧?这UpdataData()显示出来的当然就是这个喽。
最简单的方法可以这样,把单个字符的ASCII码存如char型数组,然后逐个按字符打印出来。
2005-2-2 18:48
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
11
关键是wsprintf
2005-2-2 20:43
0
游客
登录 | 注册 方可回帖
返回
//