能力值:
( LV2,RANK:10 )
|
-
-
2 楼
注册码的地址放在eax
要把注册码放进ebx
那不就mov ebx,[eax]行了
|
能力值:
( LV13,RANK:420 )
|
-
-
3 楼
eax是地址,地址就是注册码,
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
没理解
等高人吧
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
举个简单的例子
mov eax, 10000000
mov ebx, 10000010
push [eax]
pop [ebx]
这样eax的地址10000000就转化成字符到了ebx地址中了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
[QUOTE=Cyane;561137]举个简单的例子
mov eax, 10000000
mov ebx, 10000010
push [eax]
pop [ebx]
这样eax的地址10000000就转化成字符到了ebx地址中了[/QUOTE]
楼主不知道eax的地址,你这是把eax寄存器里的数据传送给了ebx把,而不是地址的传送把!!!!
|
能力值:
( LV9,RANK:180 )
|
-
-
7 楼
我老大的思维是异于常人的.
|
能力值:
( LV9,RANK:420 )
|
-
-
8 楼
EAX应该是一个指针吧
|
能力值:
(RANK:300 )
|
-
-
9 楼
eax是寄存器,没有所谓的地址....内存才有地址...
如果你的意思是寄存器的值的话
直接mov ebx,eax就可以了...如果你是想问如何把16进制转为字符串的话,直接调用sprintf函数可以实现...
吼吼....还是其他什么高深的涵义...
|
能力值:
(RANK:300 )
|
-
-
10 楼
我发现我很傻很天真...... 原来是个水贴...
|
能力值:
( LV9,RANK:420 )
|
-
-
11 楼
没明白楼上大牛的意思,我说错了?
|
能力值:
( LV3,RANK:20 )
|
-
-
12 楼
还真不知道EAX有地址。。。。。。。。。。
|
能力值:
( LV13,RANK:420 )
|
-
-
13 楼
抓狂,比如EAX的地址是00401000,那00401000就是注册码
|
能力值:
( LV9,RANK:180 )
|
-
-
14 楼
翻译一下, 我老大的意思是说
注册码存放在401000h处启. EAX=401000
所以在LZ的第一句话 "如果一个注册码就是EAX的地址的话"
应翻成 如果EAX指向一注册码
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
你老大还拿了两张精华
那不就是我说的mov ebx,[eax]吗
|
能力值:
(RANK:300 )
|
-
-
16 楼
我一早就在想这个帖子里面回答的人这样多,且都是大牛级别的人物,一般我只是膜拜的份....仔细看看原来大家在理解上只是有点偏差.
看来我们大家有时间应该聚聚开开小会,讨论一下如何统一技术辞令这个严肃的问题。呵呵........我又水了...
|
能力值:
( LV13,RANK:420 )
|
-
-
17 楼
服了你们了,倒!
如果eax=00999000
那么00999000就是注册码,而不是00999000指向的地址
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
唉,汇编沒学好啊。我理解楼主的意思,就是在确认注册码的时候,eax它里面有值,但是楼主要明白eax是寄存器,它没有地址的概念的,它里面的值不管什么都是一个32位的二进制数,所有 你的意思是要把这个二进制值当作一个字符串来做注册码吧。这很好做到啊,只要通过一个sprintf()函数把它变换下类型就可以了吧。
|
能力值:
( LV13,RANK:420 )
|
-
-
19 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
早猜到楼主的意图了,可是新注册的ID不能发言。
给个code:
//VC2008 新建Win32 Console Project
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
//C语言方式,使用sprintf转换
char buffer[9];
sprintf(buffer,"%08X",0x00401000);
//此时buffer指针指向一个“00401000”的字符串
//汇编方式
__asm
{
mov eax,401000h //eax 此时=0x00401000
push ecx //保存ecx
sub esp, 09h //扩展堆栈,保存转换的HEX字符串
xor ecx,ecx //计数开始,每次取二进制4位转换为1个HEX字符
TOHEX:
rol eax,04h //循环左移4位
mov bl,al //保存位移结果,因为要对al操作,会修改原来的数据
and al,0fh //高4位清零
add al,90h //转换运算:4位二进制数值转换1位16进制字符
daa
adc al,40h
daa
mov byte ptr [esp+ecx],al //转换结果字符保存到栈中的扩展空间
mov al,bl //恢复位移结果
inc ecx
cmp ecx,08h
jne TOHEX //继续循环
mov byte ptr [esp+08h],00h //字符串结束标志
mov ebx,esp //ebx指向结果字符串的起始地址
//==此时ebx指向一个字符串"00401000"的首地址==
add esp, 09h //恢复栈
pop ecx //恢复ECX
}
return 0;
}
|
能力值:
(RANK:300 )
|
-
-
21 楼
.
我好伤心啊,我一开始就说了这个问题了....呼呼,不看我帖子...sprintf 函数可以实现..
如果直接汇编转的话
MOV EAX,98563214h ;这个是你要转换的数字
MOV ECX,8h
PUSH EBP
MOV EBP,ESP
PUSH 0h
PUSH 0h
PUSH 0h
PUSH 0h
@:
XOR EBX,EBX
MOV BL,AL
AND BL,0Fh
ADD BL,30h
MOV BYTE PTR [ESP+ECX],BL
ROR EAX,4
LOOP @
ADD ESP,1
MOV EBX,ESP
|
能力值:
( LV13,RANK:420 )
|
-
-
22 楼
我倒,这么多代码,有没有1个函数快速搞定滴
|
能力值:
( LV9,RANK:180 )
|
-
-
23 楼
sorry...
我翻译错了
|
能力值:
( LV13,RANK:420 )
|
-
-
24 楼
呵呵,我的翻译官好厉害啊
|
能力值:
(RANK:300 )
|
-
-
25 楼
我才倒呢....
你就是打算不看帖子,自顾自的问。打屁股......
EEEOFFF回答你了阿... sprintf, 我也说了两遍了...
尤其要怪 sessiondiy,你老大视力不好。你怎么这么不负责任.....吼吼
|
|
|