首页
社区
课程
招聘
[求助]谢谢爱情海大哥的解答,遇到一个新问题,__vbaInStr和rtcReplace调用后eax返回值永远是0
发表于: 2017-5-8 15:58 2888

[求助]谢谢爱情海大哥的解答,遇到一个新问题,__vbaInStr和rtcReplace调用后eax返回值永远是0

2017-5-8 15:58
2888

之前的问题解除了,但是这个问题不知道涉及到哪些知识,寄存器中eax的返回结果总是为0,怕引起不了大家的注意,所以开新帖,希望大家帮忙解答,谢谢!

我是在源VB程序动态调试的时候,修改了一些代码,然后就出问题了,如果不修改,直接调试源程序,则rtcReplace有返回值,我修改后就没了,不知道是哪里错了?

遇到个新问题,有点困惑,因为无论调用__vbaInStr或者rtcReplace,寄存器中查看eax返回永远是0,参数设置应该都没问题,查了下资料,前面两个函数结果也都应该保存在eax中,所以发问来求解答,谢谢!

★★★★

00437095   .  8B4D E8       mov ecx,dword ptr ss:[ebp-0x18]          ;  调用replace地址

00437098   .  6A 00         push 0x0

0043709A   .  6A FF         push -0x1

0043709C   .  8BF0          mov esi,eax

0043709E   .  6A 01         push 0x1

004370A0   .  8D55 AC       lea edx,dword ptr ss:[ebp-0x54]

004370A3   .  8B3E          mov edi,dword ptr ds:[esi]

004370A5   .  51            push ecx

004370A6   .  8D45 DC       lea eax,dword ptr ss:[ebp-0x24]          ;  这个随意修改好像会出错导致程序运行崩溃

004370A9   .^ E9 D2CBFCFF   jmp Rolan.00403C80                       ;  NOP掉一段call,然后jmp到__vbaInStr函数调用,处理一段字符串

004370AE      90            nop                                      ;  似乎这样处理没有运行弹错,下面的rtcReplace也能运行

004370AF      90            nop

004370B0      90            nop

004370B1   >  8B4D E0       mov ecx,dword ptr ss:[ebp-0x20]

004370B4   .  50            push eax

004370B5   .  51            push ecx

004370B6   .  FF15 74114000 call dword ptr ds:[<&MSVBVM60.#712>]     ;  msvbvm60.rtcReplace 这里堆栈中数据正确,但是eax返回

也为0

004370BC   .  8BD0          mov edx,eax

★★★★

00403C80   > /6A 01         push 0x1                                 ;  子程序

00403C82   . |68 B03C4000   push Rolan.00403CB0                      ;  UNICODE "F:\Rolan\破解工具集\设置路径3.exe"

00403C87   . |68 A03C4000   push Rolan.00403CA0                      ;  UNICODE "\Rolan"

00403C8C   . |6A 01         push 0x1

00403C8E   . |FF15 D4114000 call dword ptr ds:[<&MSVBVM60.__vbaInStr>;  msvbvm60.__vbaInStr

00403C94   . |8BD0          mov edx,eax

00403C96   . |E9 16340300   jmp Rolan.004370B1

★★★★



[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1355
活跃值: (334)
能力值: ( LV13,RANK:920 )
在线值:
发帖
回帖
粉丝
2

输入的unicode前4字节缺少填充长度信息(bytes)
举个例子:如果在VB中表示字符“12345678”,应该如下:

在前4字节位置得储存长度bytes信息,然后再作为字符串进行instr
引用该字符串的时候则从“1”这个字符串起始地址引用,默认隐含前4字节的长度信息

如果要追根究底,请调试分析:SysAllocStringLen

2017-5-8 16:33
0
雪    币: 173
活跃值: (807)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
爱琴海 输入的unicode前4字节缺少填充长度信息(bytes)举个例子:如果在VB中表示字符“12345678”,应该如下:在前4字节位置 ...
谢谢爱琴海  已经有返回值了  明天再修复软件的功能
调试分析:SysAllocStringLen
这个是下bp  SysAllocStringLen  断点然后单步跟踪吗  第一次涉入这个API
2017-5-8 19:48
0
游客
登录 | 注册 方可回帖
返回
//