学破解论坛

 ★找回密码★
 ★免费注册★

QQ登录

绑定QQ,免密登录

查看: 345|回复: 0

VB程序破解中的一个问题

[复制链接] |关注本帖

  离线 

签到天数: 174

该用户今日未签到

50HB
恒大及论坛的各位大神好!
我正在学习160个Crackme,目前卡在了第17个程序上。
  在OD中反编译代码,结合VB Decompiler的解析进行了注释,有如下代码:
[Asm] 纯文本查看 复制代码
0040473A   > \B8 01000000   mov eax,0x1                                    ;  End If
0040473F   .  8D95 48FFFFFF lea edx,dword ptr ss:[ebp-0xB8]                ;  eax=1
00404745   .  8985 50FFFFFF mov dword ptr ss:[ebp-0xB0],eax                ;  var_B0 = 1
0040474B   .  8985 30FFFFFF mov dword ptr ss:[ebp-0xD0],eax                ;  var_D0 = 1
00404751   .  8985 00FFFFFF mov dword ptr ss:[ebp-0x100],eax               ;  var_100 = 1
00404757   .  8D45 94       lea eax,dword ptr ss:[ebp-0x6C]
0040475A   .  B9 02000000   mov ecx,0x2                                    ;  ecx=2
0040475F   .  52            push edx
00404760   .  50            push eax
00404761   .  898D 48FFFFFF mov dword ptr ss:[ebp-0xB8],ecx                ;  var_B8 = 2
00404767   .  898D 28FFFFFF mov dword ptr ss:[ebp-0xD8],ecx                ;  var_D8 = 2
0040476D   .  898D F8FEFFFF mov dword ptr ss:[ebp-0x108],ecx               ;  var_108 = 2
00404773   .  FF15 C4104000 call dword ptr ds:[<&MSVBVM60.__vbaI4Var>]     ;  var_ret_1 = CLng(var_6C)/////eax=1
00404779   .  8B8D 7CFFFFFF mov ecx,dword ptr ss:[ebp-0x84]                ;  ecx=假码///eax=n
0040477F   .  8B3D 54104000 mov edi,dword ptr ds:[<&MSVBVM60.#631>]        ;  msvbvm60.rtcMidCharBstr
00404785   .  50            push eax
00404786   .  51            push ecx
00404787   .  FFD7          call edi                                       ;  eax=假码字符串中的第n个(n为第n次循环的当次)///edx=2,ecx=0; <&MSVBVM60.#631>
00404789   .  8BD0          mov edx,eax                                    ;  edx=eax
0040478B   .  8D8D 74FFFFFF lea ecx,dword ptr ss:[ebp-0x8C]
00404791   .  FFD3          call ebx                                       ;  var_8C = Mid$(var_84, var_ret_1, var_B8)//var_8C="1"?

在最后一行的00404791处,我按照注释的内容进行取值,应该是mid(假码,12),也就是说从假码的第1个字符开始取两个字符,但我从寄存器中看到的却是只取了第1个字符!
继续向下到004047CC处,此时的var_90 = Mid$(var_88,var_ret_2, 1)= var_90 = Mid((假码,21),从从寄存器中看到的是取了第2个字符,结果是正确的。
[Asm] 纯文本查看 复制代码
004047CC   .  FFD3          call ebx                                       ;  var_90 = Mid$(var_88, var_ret_2, 1)="2"
请教,我是什么地方出错了?

请注意悬赏版规:
悬赏问答区版规,请移步>>>传送门
CM发布区版规,请移步>>>传送门
以上内容,请大家监督,如有发现违规,请立刻点击本主题右下角“举报”。有效举报将给于HB奖励。(举报时注明违规类型)

学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明

本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者其他任何非法用途!否则,一切后果请用户自负!

站长邮箱:SharkHeng#iCloud.com


站长微信号:SharkHeng|联系Email|鲨鱼逆向|手机版|小黑屋|FAQ|VIP破解教程|学破解论坛 ( 京公网安备 11011502002737号 | 京ICP备14042738号 ) 

GMT+8, 2018-9-24 15:21

快速回复 返回顶部 返回列表