首页
社区
课程
招聘
求教:OLLYDB寄存器中显示后面的UNICODE是什么,从哪里来的?
发表于: 2005-8-24 16:01 4058

求教:OLLYDB寄存器中显示后面的UNICODE是什么,从哪里来的?

2005-8-24 16:01
4058
在学习一个VB程序的注册过程时,发现程序启动后,会根据硬盘号生成注册码,以便在注册时用此注册码进行比较。
可是在分析时遇到问题,请大家指点指点:

我是在OLEAUT32中下断

77100328 O>  8BFF          mov edi,edi                      此处下断,F8单步运行。
7710032A     55            push ebp
7710032B     8BEC          mov ebp,esp                      将ESP送入EBP,ESP是注册码的存放起始地址
7710032D     53            push ebx
7710032E     56            push esi
7710032F     8B75 08       mov esi,dword ptr ss:[ebp+8]     向ESI中送入用户输入的注册码
77100332     57            push edi
77100333     56            push esi
77100334     E8 6F49FFFF   call OLEAUT32.SysStringByteLen
77100339     8B7D 0C       mov edi,dword ptr ss:[ebp+C]     向EDI中送入程序生成的注册码

按F8运行到mov edi,dword ptr ss:[ebp+C]后,此时,寄存器中显示的内容为
ESI  00191CCC  UNICODE "465724634575637"
EDI  00191f44  UNICODE "465724634575637"

向EDI中送入的是 Dword 值,可是为什么寄存器中显示EDI后面的UNICODE是什么,从哪里来的?

我在用内存注册机生成内存注册机时,在主程序中下断了,让他显示注册码为内存:ESP+C,可显示的只是一些十六进制数,而不是UNICODE的字符。请问如何才能显示UNICODE的注册码呢?
谢谢!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
把程序发到chang139@21cn.com帮你试一下,我现在有空。
2005-8-24 16:08
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
估计你是不在程序领空下断
2005-8-24 16:13
0
雪    币: 239
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4
谢谢。但程序太大,不能直接发的。我不明白为什么寄存器后的UNICODE是从哪里来的。
2005-8-24 16:17
0
雪    币: 200
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
是相应的内存地址里的数据~

堆贱也是内存,不过形式特殊了点,你这显示的就是00191CCC位置的内存数据是46572463....

他肯定是在某个地方压进堆贱的,你仔细找找~~

类似这样的句子

MOV eax, [xxxxx]
PUSH eax
2005-8-24 17:40
0
雪    币: 239
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
再次谢谢。
可我是初次学习破解,还是不太明白,就是内存数据都是BYTE之类的数据类型。而上现显示的寄存器中的内容是UNICODE的文本。而不是数值。这个就不明白了。
2005-8-24 21:20
0
雪    币: 239
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
想了想,明白一点了:
我下的断点是在OLEAUT32中比较字符串的函数,是主程序(VB写的)调用MSVB60.DLL,然后MSVB库再去调用OLEAUT32.DLL。因此,传递的参数应该是内存地址。其指向的就是字符串。

再慢慢研究学习学习。
再次谢谢各位!
2005-8-24 22:25
0
游客
登录 | 注册 方可回帖
返回
//