首页
社区
课程
招聘
[求助]一段反汇编看不懂,望有人可以帮忙解析下它的功能
发表于: 2009-9-1 15:52 5000

[求助]一段反汇编看不懂,望有人可以帮忙解析下它的功能

2009-9-1 15:52
5000
【求助】一段反汇编看不懂,望有人可以帮忙解析下它的功能,具体如下,谢谢:

.text:00407353 ; =============== S U B R O U T I N E =======================================
.text:00407353
.text:00407353 ; Attributes: bp-based frame
.text:00407353
.text:00407353 ; int __stdcall sub_407353(LPCWSTR lpString1, LPCWSTR lpString2)
.text:00407353 sub_407353      proc near               ; CODE XREF: wWinMain(x,x,x,x)+97p
.text:00407353                                         ; wWinMain(x,x,x,x)+AAp ...
.text:00407353
.text:00407353 lpString1       = dword ptr  8
.text:00407353 lpString2       = dword ptr  0Ch
.text:00407353
.text:00407353                 mov     edi, edi
.text:00407355                 push    ebp
.text:00407356                 mov     ebp, esp
.text:00407358                 cmp     [ebp+lpString1], 0
.text:0040735C                 jz      short loc_407394
.text:0040735E                 cmp     [ebp+lpString2], 0
.text:00407362                 jz      short loc_407394
.text:00407364                 push    [ebp+lpString2] ; lpString2
.text:00407367                 push    [ebp+lpString1] ; lpString1
.text:0040736A                 call    sub_40732D
.text:0040736F                 sub     eax, 0
.text:00407372                 jz      short loc_40738D
.text:00407374                 dec     eax
.text:00407375                 jz      short loc_407388
.text:00407377                 dec     eax
.text:00407378                 jz      short loc_407384
.text:0040737A                 dec     eax
.text:0040737B                 jz      short loc_407388
.text:0040737D                 mov     eax, 8007000Dh
.text:00407382                 jmp     short loc_407399
.text:00407384 ; ---------------------------------------------------------------------------
.text:00407384
.text:00407384 loc_407384:                             ; CODE XREF: sub_407353+25j
.text:00407384                 xor     eax, eax
.text:00407386                 jmp     short loc_407399
.text:00407388 ; ---------------------------------------------------------------------------
.text:00407388
.text:00407388 loc_407388:                             ; CODE XREF: sub_407353+22j
.text:00407388                                         ; sub_407353+28j
.text:00407388                 xor     eax, eax
.text:0040738A                 inc     eax
.text:0040738B                 jmp     short loc_407399
.text:0040738D ; ---------------------------------------------------------------------------
.text:0040738D
.text:0040738D loc_40738D:                             ; CODE XREF: sub_407353+1Fj
.text:0040738D                 call    sub_4066A6
.text:00407392                 jmp     short loc_407399
.text:00407394 ; ---------------------------------------------------------------------------
.text:00407394
.text:00407394 loc_407394:                             ; CODE XREF: sub_407353+9j
.text:00407394                                         ; sub_407353+Fj
.text:00407394                 mov     eax, 80070057h
.text:00407399
.text:00407399 loc_407399:                             ; CODE XREF: sub_407353+2Fj
.text:00407399                                         ; sub_407353+33j ...
.text:00407399                 pop     ebp
.text:0040739A                 retn    8
.text:0040739A sub_407353      endp
.text:0040739A
.text:0040739A ; ---------------------------------------------------------------------------
.text:0040739D                 db 5 dup(0CCh)
.text:004073A2

==========================================================

求救啊~~O(∩_∩)O谢谢

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

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 186
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
判断程序传来参数的;关键代码你一个也没贴
winmain(char *string1,char *string2)
{
   if(string1== NULL||string2==NULL)
            return ;
    int i = sub_40732D(string1,string2);//这个没贴代码,,应该是判断命令行的
  
  //下面判断返回值1;
   //判断i 可能是用switch分支结构判断的,
  //你给你的代码太少
   
}
2009-9-1 16:23
0
雪    币: 186
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
switch(i)
{
   case 0:....break;
   case 1:....break;
   case 2:....break;
}
2009-9-1 16:24
0
雪    币: 186
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
贴个完整的
winmain(char *string1,char *string2)
{
   if(string1== NULL||string2==NULL)
            return ;
    int i = sub_40732D(string1,string2);//判断命令行的参数
  
  switch(i)
{
   case 0: /*调用相应处理函数*/break;
   case 1:/*调用相应处理函数*/break;
   case 2:/*调用相应处理函数*/break;
   case 3:/*调用相应处理函数*/break;

}
   return   0x8007000D;
}
2009-9-1 16:31
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢,续上:

.text:0040732D ; =============== S U B R O U T I N E =======================================
.text:0040732D
.text:0040732D ; Attributes: bp-based frame
.text:0040732D
.text:0040732D ; int __stdcall sub_40732D(LPCWSTR lpString1, LPCWSTR lpString2)
.text:0040732D sub_40732D      proc near               ; CODE XREF: sub_407353+17p
.text:0040732D
.text:0040732D lpString1       = dword ptr  8
.text:0040732D lpString2       = dword ptr  0Ch
.text:0040732D
.text:0040732D                 mov     edi, edi
.text:0040732F                 push    ebp
.text:00407330                 mov     ebp, esp
.text:00407332                 push    0FFFFFFFFh      ; cchCount2
.text:00407334                 push    [ebp+lpString2] ; lpString2
.text:00407337                 push    0FFFFFFFFh      ; cchCount1
.text:00407339                 push    [ebp+lpString1] ; lpString1
.text:0040733C                 push    1               ; dwCmpFlags
.text:0040733E                 call    sub_407270
.text:00407343                 push    eax             ; Locale
.text:00407344                 call    ds:CompareStringW
.text:0040734A                 pop     ebp
.text:0040734B                 retn    8
.text:0040734B sub_40732D      endp
.text:0040734B
.text:0040734B ; ---------------------------------------------------------------------------
.text:0040734E                 db 5 dup(0CCh)
.text:00407353
2009-9-1 16:32
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
.text:00407270 ; =============== S U B R O U T I N E =======================================
.text:00407270
.text:00407270
.text:00407270 sub_407270      proc near               ; CODE XREF: sub_407289+4Cp
.text:00407270                                         ; sub_40732D+11p
.text:00407270                 call    sub_406636
.text:00407275                 neg     eax
.text:00407277                 sbb     eax, eax
.text:00407279                 and     eax, 0FFFFFC76h
.text:0040727E                 add     eax, 409h
.text:00407283                 retn
.text:00407283 sub_407270      endp
.text:00407283
.text:00407283 ; ---------------------------------------------------------------------------
.text:00407284                 db 5 dup(0CCh)
2009-9-1 16:33
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
够了么?本人系菜鸟,望赐教
2009-9-1 16:34
0
雪    币: 186
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
call    sub_407270 ;取本地设置
CompareStringW(eax,1,字符串1,-1,字符串2,-1)
根据用于特定“地方”环境的文本对比设置,对两个字串进行比较
字符串大小设为-1,表示进行自动计算(以NULL中止字符为准)
2009-9-1 16:42
0
雪    币: 186
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
winmain
比较两个参数的大小,
  如果相等怎么样。
  如果大于怎么样。
  如果小于怎么样。
2009-9-1 16:43
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
“怎么样”应该到哪里去看?
2009-9-1 16:48
0
雪    币: 186
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
相等:call    sub_4066A6
不相等返回。
2009-9-1 16:51
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
.text:004066A6 ; =============== S U B R O U T I N E =======================================
.text:004066A6
.text:004066A6
.text:004066A6 sub_4066A6      proc near               ; CODE XREF: sub_403935+22p
.text:004066A6                                         ; sub_403935+61p ...
.text:004066A6                 call    ds:GetLastError
.text:004066AC                 test    eax, eax
.text:004066AE                 jle     short locret_4066BA
.text:004066B0                 and     eax, 0FFFFh
.text:004066B5                 or      eax, 80070000h
.text:004066BA
.text:004066BA locret_4066BA:                          ; CODE XREF: sub_4066A6+8j
.text:004066BA                 retn
.text:004066BA sub_4066A6      endp
.text:004066BA
.text:004066BA ; ---------------------------------------------------------------------------
.text:004066BB                 align 10h
.text:004066C0
2009-9-1 16:52
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
程序流程清楚了些,但是感觉对程序功能还是茫然
2009-9-1 16:53
0
雪    币: 186
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
这才一个main函数,
    要分析的多了。
2009-9-1 16:56
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
啊~~郁闷。O(∩_∩)O谢谢
2009-9-1 16:57
0
游客
登录 | 注册 方可回帖
返回
//