首页
社区
课程
招聘
找到关键call,用D命令看到自己的注册码和内存上的注册码,但不能正确注册
发表于: 2005-11-6 16:34 5718

找到关键call,用D命令看到自己的注册码和内存上的注册码,但不能正确注册

2005-11-6 16:34
5718

我破解的程序是LMHC(小火车),这是一个幼儿学前数学教育的小程序,在没有注册下,每计算3次后,程序自动弹出注册窗口,遇到不正确注册的,自动关闭程序。菜鸟自己破解的第一个VB5程序!下载地址是:http://www.lelewu.com/learnm/default.htm.
找到关键call,用D命令能看到自己的注册码,看到内存上的注册码,但不能正确注册
--------------------------------------------------------------------------
我的步骤如下:
1、用侦壳 Language 侦之,无壳,是用VB5做的程序!
2、打开程序LMHC,随便输入注册码,提示“你输入的注册码不正确,请重新输入”!
3、用反编译 W32DASM 的“串参考”查找无相关的串,如下:
---------------------------------------------------------------------------
String Resource ID=00201: "6895472031"
String Resource ID=00202: "ksiowlqenticpzurntjk"
String Resource ID=00203: "fjdkeloswlrnkktekwoq"
String Resource ID=00204: "zzmcjfuoelelkifuhsaa"
String Resource ID=00205: "2058963147"
""
""k?O(u<"
""k???PNPNK\Q羸?"
"$E@"
"..tmp"
"_N镉逦rezz<h.??\4s
Nkpf??e拗f???pf?
"ㄠ\        g:gOMQ9?_0R,g8nb桁?x"
"⑸BK?H??溱?s3g嬲A<J?]?扁辽!?嬖H?-揸?
"8nb铞??^┮?Q妃f[`Npepe0"
"8nb瑰侦?p?        N?        c?"
"ddds"
"G@"
---------------------------------------------------------------------------
看来,暴力破之不能呀!只能跟踪一下看???
一、运行TW2000,
二、运行LMHC。EXE
三、选中注册窗口,随便输入注册码:78787878,
四、按ctrl+n激活TRW2000
输入bpx hmemcpy
按F5切回LMHC然後按下OK键...
TRW拦下後...BC* 取消中断
下 pmodule,按F12,哗,马上跳出“密码不正确”的提示框,晕!!!!这么快!!!
只好重新开始上面几步,这次在下pmodule后,先不按F12,
改为一直按F10....直到下面:

0197:0040E97A  CALL     `MSVBVM50!__vbaI2Var`
0197:0040E980  MOVSX    EAX,AX
0197:0040E983  MOV      [EBP+FFFFFB88],EAX
0197:0040E989  PUSH     EAX
0197:0040E98A  LEA      EAX,[EBP+FFFFFD60]
0197:0040E990  LEA      ECX,[EBP+FFFFFE40]
0197:0040E996  LEA      EDX,[EBP+FFFFFE80]
0197:0040E99C  PUSH     EAX
0197:0040E99D  PUSH     ECX
0197:0040E99E  MOV      [EBP+FFFFFD68],EDX
0197:0040E9A4  MOV      DWORD [EBP+FFFFFD60],4008
0197:0040E9AE  CALL     `MSVBVM50!rtcLeftCharVar`
0197:0040E9B4  LEA      EDX,[EBP+FFFFFE40]
0197:0040E9BA  LEA      EAX,[EBP+FFFFFF54]
0197:0040E9C0  PUSH     EDX
0197:0040E9C1  PUSH     EAX
0197:0040E9C2  CALL     `MSVBVM50!__vbaVarTstEq` ****应该为关键call*****
0197:0040E9C8  LEA      ECX,[EBP+FFFFFE40]
0197:0040E9CE  MOV      [EBP+FFFFFCCC],EAX
0197:0040E9D4  CALL     `MSVBVM50!__vbaFreeVar`
0197:0040E9DA  CMP      WORD [EBP+FFFFFCCC],BYTE +00 ****作注册码比较*****
0197:0040E9E2  JZ       0040E9EB
0197:0040E9E4  MOV      DWORD [EBP-60],FFFFFFFF
0197:0040E9EB  CMP      WORD [EBP-60],BYTE +00
0197:0040E9F0  JZ       NEAR 0040FC06
0197:0040E9F6  MOV      ECX,[EBP+FFFFFF18]
0197:0040E9FC  LEA      EDX,[EBP+FFFFFEA4]
0197:0040EA02  MOV      [EBP+FFFFFD68],ECX
0197:0040EA08  LEA      EAX,[EBP+FFFFFD60]
0197:0040EA0E  PUSH     EDX
0197:0040EA0F  LEA      ECX,[EBP+FFFFFE40]
0197:0040EA15  PUSH     EAX
0197:0040EA16  PUSH     ECX
0197:0040EA17  MOV      DWORD [EBP+FFFFFD60],08
0197:0040EA21  CALL     `MSVBVM50!__vbaVarAdd`
0197:0040EA27  MOV      EDX,EAX
0197:0040EA29  LEA      ECX,[EBP+FFFFFF08]
0197:0040EA2F  CALL     `MSVBVM50!__vbaVarMove`
0197:0040EA35  MOV      EAX,[EBP+FFFFFE80]
0197:0040EA3B  LEA      EDX,[EBP+FFFFFE80]
0197:0040EA41  PUSH     EAX
0197:0040EA42  MOV      [EBP+FFFFFD68],EDX
0197:0040EA48  MOV      DWORD [EBP+FFFFFD60],4008
0197:0040EA52  CALL     `MSVBVM50!__vbaLenBstr`
0197:0040EA58  MOV      EDX,[EBP+FFFFFB88]
0197:0040EA5E  LEA      ECX,[EBP+FFFFFD60]
0197:0040EA64  SUB      EAX,EDX
0197:0040EA66  LEA      EDX,[EBP+FFFFFE40]
0197:0040EA6C  JO       NEAR 0040FF30
0197:0040EA72  PUSH     EAX
0197:0040EA73  PUSH     ECX
0197:0040EA74  PUSH     EDX
0197:0040EA75  CALL     `MSVBVM50!rtcRightCharVar`0197:0040E97A  CALL     `MSVBVM50!__vbaI2Var`
0197:0040E980  MOVSX    EAX,AX
0197:0040E983  MOV      [EBP+FFFFFB88],EAX
0197:0040E989  PUSH     EAX
0197:0040E98A  LEA      EAX,[EBP+FFFFFD60]
0197:0040E990  LEA      ECX,[EBP+FFFFFE40]
0197:0040E996  LEA      EDX,[EBP+FFFFFE80]
0197:0040E99C  PUSH     EAX
0197:0040E99D  PUSH     ECX
0197:0040E99E  MOV      [EBP+FFFFFD68],EDX
0197:0040E9A4  MOV      DWORD [EBP+FFFFFD60],4008
0197:0040E9AE  CALL     `MSVBVM50!rtcLeftCharVar`
0197:0040E9B4  LEA      EDX,[EBP+FFFFFE40]
0197:0040E9BA  LEA      EAX,[EBP+FFFFFF54]
0197:0040E9C0  PUSH     EDX
0197:0040E9C1  PUSH     EAX
0197:0040E9C2  CALL     `MSVBVM50!__vbaVarTstEq`
0197:0040E9C8  LEA      ECX,[EBP+FFFFFE40]
0197:0040E9CE  MOV      [EBP+FFFFFCCC],EAX
0197:0040E9D4  CALL     `MSVBVM50!__vbaFreeVar`
0197:0040E9DA  CMP      WORD [EBP+FFFFFCCC],BYTE +00
0197:0040E9E2  JZ       0040E9EB
0197:0040E9E4  MOV      DWORD [EBP-60],FFFFFFFF
0197:0040E9EB  CMP      WORD [EBP-60],BYTE +00
0197:0040E9F0  JZ       NEAR 0040FC06
0197:0040E9F6  MOV      ECX,[EBP+FFFFFF18]
0197:0040E9FC  LEA      EDX,[EBP+FFFFFEA4]
0197:0040EA02  MOV      [EBP+FFFFFD68],ECX
0197:0040EA08  LEA      EAX,[EBP+FFFFFD60]
0197:0040EA0E  PUSH     EDX
0197:0040EA0F  LEA      ECX,[EBP+FFFFFE40]
0197:0040EA15  PUSH     EAX
0197:0040EA16  PUSH     ECX
0197:0040EA17  MOV      DWORD [EBP+FFFFFD60],08
0197:0040EA21  CALL     `MSVBVM50!__vbaVarAdd`
0197:0040EA27  MOV      EDX,EAX
0197:0040EA29  LEA      ECX,[EBP+FFFFFF08]
0197:0040EA2F  CALL     `MSVBVM50!__vbaVarMove`
0197:0040EA35  MOV      EAX,[EBP+FFFFFE80]
0197:0040EA3B  LEA      EDX,[EBP+FFFFFE80]
0197:0040EA41  PUSH     EAX
0197:0040EA42  MOV      [EBP+FFFFFD68],EDX
0197:0040EA48  MOV      DWORD [EBP+FFFFFD60],4008
0197:0040EA52  CALL     `MSVBVM50!__vbaLenBstr`
0197:0040EA58  MOV      EDX,[EBP+FFFFFB88]
0197:0040EA5E  LEA      ECX,[EBP+FFFFFD60]
0197:0040EA64  SUB      EAX,EDX
0197:0040EA66  LEA      EDX,[EBP+FFFFFE40]
0197:0040EA6C  JO       NEAR 0040FF30
0197:0040EA72  PUSH     EAX
0197:0040EA73  PUSH     ECX
0197:0040EA74  PUSH     EDX
0197:0040EA75  CALL     `MSVBVM50!rtcRightCharVar`

此时,用D命令看到 EDX=7926312(D),EAX=7926588(D)
怪为何不是自己的“78787878”呢! 在注册窗口内输入“7926312”,显示不正确!晕!@#!&

另外,用S命令搜索内存上的自己注册码“78787878”,再上下翻页,找到好东东--bfjnrvz,还是不正确!再次晕倒在床上....
半小时后,重新起来,写下此文,急盼高手指教!我在此打个辑先!!!
若我分析得不对,请狠狠地批评,我都愿意!!!

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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 108
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
发的不是地方
2005-11-6 16:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
自己DING!!!!!
2005-11-6 16:37
0
雪    币: 47147
活跃值: (20470)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
注意一下,VB下的字符是UNICODE。

_vbaVarTstEq测试变量是否相等,你改其返回值就明白了。
2005-11-6 16:45
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
vb的程序比较难破啊
2005-11-6 16:57
0
雪    币: 279
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
最初由 kanxue 发布
注意一下,VB下的字符是UNICODE。

_vbaVarTstEq测试变量是否相等,你改其返回值就明白了。


学习啊~~

不知道哪位大哥能提示一下MSVBVM60.rtcAnsiValueBstr是起什么作用~
或是下载什么书可以学习这些知道~~

请知道的大哥一定PM小弟或下面跟贴啊~~~

谢谢
2005-11-6 17:42
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
可以爆破的。。。。__vbaStrComp走一遍你会发现点什么。。
2005-11-6 19:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我找到了MSVBVM50.__vbaStrCmp的句子,但用TRW追踪却又找不到此句子,为何?
* Reference To: MSVBVM50.__vbaStrCmp, Ord:0000h
                                  |
:0040B415 FF15A4524100            Call dword ptr [004152A4]

它的偏移地址是:A815

----------------------------
鼓励一下小菜鸟吧,刚学一个星期的!雪教程看了不少的!
2005-11-8 16:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
用GOOGLE在看雪学院里一搜不就出来了!!!!
2005-11-8 16:11
0
雪    币: 204
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这个 _vbaVarTstEq 作断点不错^_^
2005-11-8 17:24
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
11
实在不行的话,就爆了!

TNT就很简单了!
2005-11-9 09:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我相信看雪的规则,耐心+信心+坚持 一定能破的!
我还是多去看一下雪教程吧!

各位大虾愿意的再指点一下,要多鼓励一下小菜鸟呀!
2005-11-9 15:04
0
雪    币: 128
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
汉~研究了半天我也只能爆破,哪位大侠写篇算法分析呀?
2005-11-11 11:18
0
游客
登录 | 注册 方可回帖
返回
//