當前位置:編程學習大全網 - 編程語言 - 壹段反匯編代碼求高手指點

壹段反匯編代碼求高手指點

004B7380 8B4C24 08 mov ecx,dword ptr ss:[esp+0x8] // ecx = A

004B7384 53 push ebx

004B7385 55 push ebp

004B7386 56 push esi //入棧保存現場

004B7387 8B7424 10 mov esi,dword ptr ss:[esp+0x10] // esi = B 應該也是壹個地址

004B738B 57 push edi //

004B738C 33FF xor edi,edi // 0

004B738E 8B2E mov ebp,dword ptr ds:[esi] //ebp保存基址

004B7390 8B56 04 mov edx,dword ptr ds:[esi+0x4] // edx = C

004B7393 8B46 08 mov eax,dword ptr ds:[esi+0x8] // eax = D

004B7396 3BCF cmp ecx,edi // 判斷 ECX(A) 是否 > 0

004B7398 897C24 14 mov dword ptr ss:[esp+0x14],edi //esp+0x14 = 0

004B739C 76 3A jbe Xserver_c.004B73D8 // 不是的話則跳轉到 004B73D8

004B739E 83F8 01 cmp eax,0x1 // 否則比較 eax(D) 是否比 1 小

004B73A1 72 35 jb Xserver_c.004B73D8 //是的話 跳到 004B73D8

004B73A3 B9 07000000 mov ecx,0x7 // 否則 ecx(A) = 7

004B73A8 BB 01000000 mov ebx,0x1 // ebx = 1

004B73AD 2BCA sub ecx,edx // ecx = 7 - edx (C)

004B73AF D3E3 shl ebx,cl // ebx 向←移動 cl 位(Byte/最後壹位進入CF位)

004B73B1 8A4D 00 mov cl,byte ptr ss:[ebp] // 也就是 B 地址的第壹個字節 呵呵~~

004B73B4 22D9 and bl,cl // bl cl 兩個 Byte 寄存器 & 操作

004B73B6 F6DB neg bl // bl 求補 用 0 - bl

004B73B8 1BDB sbb ebx,ebx // 看 CF 位 CF 位 = 0 那麽 ebx = 0 否則 ebx = 0xFFFFFFFF

004B73BA F7DB neg ebx // ebx 求補

004B73BC 42 inc edx // ebx++

004B73BD 83E2 07 and edx,0x7 // ebx 與 7 與操作 ..ebx最高只能為 7

004B73C0 8D3C7B lea edi,dword ptr ds:[ebx+edi*2] // edi = ds:[ebx+edi*2] 的地址

004B73C3 75 02 jnz Xserver_c.004B73C7 // 若 and 結果不為 0 則跳轉 到 004B73C7

004B73C5 48 dec eax // D--

004B73C6 45 inc ebp // ebp ++

// 004B73C7 //

8B4C24 14 mov ecx,dword ptr ss:[esp+0x14] // ecx = 0 (esp+0x14 = 0)

004B73CB 8B5C24 18 mov ebx,dword ptr ss:[esp+0x18] // ebx = esp+0x18

004B73CF 41 inc ecx // ecx ++ ecx = 1

004B73D0 3BCB cmp ecx,ebx // 1 - ebx

004B73D2 894C24 14 mov dword ptr ss:[esp+0x14],ecx // esp+0x14 = 1

004B73D6 ^ 72 C6 jb Xserver_c.004B739E // ebx 是否 > 1 大於 則 轉移 004B739E

// 004B73D8 //

8946 08 mov dword ptr ds:[esi+0x8],eax // D = eax

004B73DB 8BC7 mov eax,edi // 看之前的跳轉分支 ... 決定 eax 是什麽 ..

004B73DD 892E mov dword ptr ds:[esi],ebp

004B73DF 8956 04 mov dword ptr ds:[esi+0x4],edx // C = edx

004B73E2 5F pop edi // 出棧 恢復現場

004B73E3 5E pop esi

004B73E4 5D pop ebp

004B73E5 5B pop ebx

004B73E6 C3 retn //子程序返回

  • 上一篇:蜜雪冰城動畫片叫什麽名字
  • 下一篇:UI設計未來發展前景怎麽樣?
  • copyright 2024編程學習大全網