首页
社区
课程
招聘
[求助]几条汇编语句,求大神帮我看看怎么转换成C代码。。。
发表于: 2017-6-25 07:49 3428

[求助]几条汇编语句,求大神帮我看看怎么转换成C代码。。。

2017-6-25 07:49
3428

.text:15033CE0                 mov     ecx, [esp+arg_pBuf]
.text:15033CE4                 mov     edx, [esp+arg_pszFileName]
.text:15033CE8                 push    esi
.text:15033CE9                 mov     eax, ecx
.text:15033CEB                 neg     eax
.text:15033CED                 sbb     eax, eax
.text:15033CEF                 mov     esi, edx
.text:15033CF1                 neg     esi
.text:15033CF3                 sbb     esi, esi
.text:15033CF5                 test    esi, eax
.text:15033CF7                 jnz     short loc_15033D06

我试了半天也没法生成这样的语句。求大神帮我看看。在线坐等啊。。谢谢。

主要是这几句实在是不懂

.text:15033CE9                 mov     eax, ecx
.text:15033CEB                 neg     eax
.text:15033CED                 sbb     eax, eax
.text:15033CEF                 mov     esi, edx
.text:15033CF1                 neg     esi
.text:15033CF3                 sbb     esi, esi
.text:15033CF5                 test    esi, eax


下面的代码是我还原出来的。。。但是不对啊。。



这段汇编的意思大概是判断两个字符串指针是否为0(NULL),如果其中有一个为0那么就不会跳转。

很好奇怎么写才会编译出这种代码。。。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 80
活跃值: (13)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2

if(arg_pBuf==0)
       var_eax=0;
if(arg_pszFileName==0)
       var_esi=0;
if(var_eax&&var_esi)
{
       //loc_15033D06
}

//两个指针均不指向NULL,跳转到15033D06

2017-6-25 10:08
0
雪    币: 5954
活跃值: (46)
能力值: ( LV4,RANK:140 )
在线值:
发帖
回帖
粉丝
3
if( !ecx == !edx )
{
    printf("");
}
    printf("def\n");

我觉得可能是这样写的吧

2017-6-25 11:41
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2017-6-25 12:55
0
雪    币: 115
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5

if (arg_pBuf && arg_pszFileName)
{
	//判断两个参数都不为NULL,才执行这里
	...
}
else
{
	goto loc_15033D06
}


2017-6-26 16:24
0
游客
登录 | 注册 方可回帖
返回
//