最初由 fly 发布
……
如果你发现程序执行扫描功能时出错,不要心急,原程序就有这个问题。作者和我们开个玩笑?
……
3.57 出来了,看了一下。应该是系统语言的原因。
004225F0 . A1 B40C4900 mov eax,dword ptr ds:[490CB4]
004225F5 . 56 push esi ; unpacked.0047A4B8
004225F6 . 85C0 test eax,eax
004225F8 . 8BF1 mov esi,ecx
004225FA 74 04 je short unpacked.00422600
004225FC . 33C0 xor eax,eax
004225FE . FE00 inc byte ptr ds:[eax] ;
出错
00419B43 . E8 48130000 call unpacked.0041AE90
00419B48 . A3 B40C4900 mov dword ptr ds:[490CB4],eax
0041AE90 /$ 81EC 08010000 sub esp,108
0041AE96 |. 53 push ebx
0041AE97 |. 55 push ebp
0041AE98 |. E8 E3000000
call unpacked.0041AF80
0041AE9D |. 85C0 test eax,eax
0041AE9F |. 74 0E je short unpacked.0041AEAF
0041AEA1 |. 5D pop ebp ; unpacked.00497078
0041AEA2 |. B8 01000000 mov eax,1
0041AEA7 |. 5B pop ebx ; unpacked.00497078
0041AEA8 |. 81C4 08010000 add esp,108
0041AEAE |. C3 retn
0041AEAF |> 8D4424 0C lea eax,dword ptr ss:[esp+C]
0041AEB3 |. 68 04010000 push 104 ; /BufSize = 104 (260.)
0041AEB8 |. 50 push eax ; |PathBuffer = 00000060
0041AEB9 |. 6A 00 push 0 ; |hModule = NULL
0041AEBB |. FF15 E8724700 call dword ptr ds:[<&kernel32.GetModuleF>; \GetModuleFileNameA
0041AEC1 |. 6A 00 push 0 ; /hTemplateFile = NULL
0041AEC3 |. 6A 00 push 0 ; |Attributes = 0
0041AEC5 |. 6A 03 push 3 ; |Mode = OPEN_EXISTING
0041AEC7 |. 6A 00 push 0 ; |pSecurity = NULL
0041AEC9 |. 6A 03 push 3 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
0041AECB |. 8D4C24 20 lea ecx,dword ptr ss:[esp+20] ; |
0041AECF |. 68 00000080 push 80000000 ; |Access = GENERIC_READ
0041AED4 |. 51 push ecx ; |FileName = "?G"
0041AED5 |. FF15 54724700 call dword ptr ds:[<&kernel32.CreateFile>; \CreateFileA
0041AEDB |. 8BE8 mov ebp,eax
0041AEDD |. 83FD FF cmp ebp,-1
0041AEE0 |. 75 0B jnz short unpacked.0041AEED
0041AEE2 |. 5D pop ebp ; unpacked.00497078
0041AEE3 |. 33C0 xor eax,eax
0041AEE5 |. 5B pop ebx ; unpacked.00497078
0041AEE6 |. 81C4 08010000 add esp,108
0041AEEC |. C3 retn
0041AEED |> 8D5424 08 lea edx,dword ptr ss:[esp+8]
0041AEF1 |. 52 push edx ; /pFileSizeHigh = NULL
0041AEF2 |. 55 push ebp ; |hFile = NULL
0041AEF3 |. FF15 C0734700 call dword ptr ds:[<&kernel32.GetFileSiz>; \GetFileSize
0041AEF9 |. 8BD8 mov ebx,eax
0041AEFB |. 83FB FF cmp ebx,-1
0041AEFE |. 75 12 jnz short unpacked.0041AF12
0041AF00 |. 55 push ebp ; /hObject = NULL
0041AF01 |. FF15 50724700 call dword ptr ds:[<&kernel32.CloseHandl>; \CloseHandle
0041AF07 |. 5D pop ebp ; unpacked.00497078
0041AF08 |. 33C0 xor eax,eax
0041AF0A |. 5B pop ebx ; unpacked.00497078
0041AF0B |. 81C4 08010000 add esp,108
0041AF11 |. C3 retn
0041AF12 |> 8B4424 08 mov eax,dword ptr ss:[esp+8]
0041AF16 |. 56 push esi ; unpacked.00497078
0041AF17 |. 85C0 test eax,eax
0041AF19 |. 57 push edi
0041AF1A |. 75 06 jnz short unpacked.0041AF22
0041AF1C |. 8BFB mov edi,ebx
0041AF1E |. 33F6 xor esi,esi ; unpacked.00497078
0041AF20 |. EB 16 jmp short unpacked.0041AF38
0041AF22 |> 6A 01 push 1
0041AF24 |. 6A 00 push 0
0041AF26 |. 6A 00 push 0
0041AF28 |. 50 push eax
0041AF29 |. E8 02420200 call unpacked.0043F130
0041AF2E |. 8BF8 mov edi,eax
0041AF30 |. 33C0 xor eax,eax
0041AF32 |. 8BF2 mov esi,edx
0041AF34 |. 03FB add edi,ebx
0041AF36 |. 13F0 adc esi,eax
0041AF38 |> 55 push ebp ; /hObject = NULL
0041AF39 |. FF15 50724700 call dword ptr ds:[<&kernel32.CloseHandl>; \CloseHandle
0041AF3F |. 85F6 test esi,esi ; unpacked.00497078
0041AF41 |. 7F 25 jg short unpacked.0041AF68
0041AF43 |. 7C 08 jl short unpacked.0041AF4D
0041AF45 |. 81FF 90230B00 cmp edi,0B2390 ;
自校验1
0041AF4B |. 77 1B ja short unpacked.0041AF68
0041AF4D |> 85F6 test esi,esi ; unpacked.00497078
0041AF4F |. 7C 17 jl short unpacked.0041AF68
0041AF51 |. 7F 08 jg short unpacked.0041AF5B
0041AF53 |. 81FF F09C0900 cmp edi,99CF0
0041AF59 |. 72 0D jb short unpacked.0041AF68
0041AF5B |> 5F pop edi ; unpacked.00497078
0041AF5C |. 5E pop esi ; unpacked.00497078
0041AF5D |. 5D pop ebp ; unpacked.00497078
0041AF5E |. 33C0 xor eax,eax
0041AF60 |. 5B pop ebx ; unpacked.00497078
0041AF61 |. 81C4 08010000 add esp,108
0041AF67 |. C3 retn
0041AF80 /$ FF15 BC734700 call dword ptr ds:[<&kernel32.GetSystemD>; [GetSystemDefaultLangID
0041AF86 |. 66:3D 0408 cmp ax,804
0041AF8A |. 75 06 jnz short unpacked.0041AF92 ;
检测系统语言ID,如果这里不跳,则引起004225FE处的异常。
0041AF8C |. B8 01000000 mov eax,1
0041AF91 |. C3 retn
0041AF92 |> 25 FF030000 and eax,3FF
0041AF97 |. 33C9 xor ecx,ecx ; unpacked.00497078
0041AF99 |. 83F8 19 cmp eax,19
0041AF9C |. 0F94C1 sete cl
0041AF9F |. 8BC1 mov eax,ecx ; unpacked.00497078
0041AFA1 \. C3 retn
另一出错处:
0041F920 . E8 0B010000
call unpacked.0041FA30
0041F925 . 85C0 test eax,eax
0041F927 . 74 04 je short unpacked.0041F92D
0041F929 . 33C0 xor eax,eax
0041F92B . FE00 inc byte ptr ds:[eax]
0041FA30 /$ 81EC 08010000 sub esp,108
0041FA36 |. 8D4424 04 lea eax,dword ptr ss:[esp+4]
0041FA3A |. 53 push ebx
0041FA3B |. 55 push ebp
0041FA3C |. 68 04010000 push 104 ; /BufSize = 104 (260.)
0041FA41 |. 50 push eax ; |PathBuffer = 00000060
0041FA42 |. 6A 00 push 0 ; |hModule = NULL
0041FA44 |. FF15 E8724700 call dword ptr ds:[<&kernel32.GetModuleF>; \GetModuleFileNameA
0041FA4A |. 6A 00 push 0 ; /hTemplateFile = NULL
0041FA4C |. 6A 00 push 0 ; |Attributes = 0
0041FA4E |. 6A 03 push 3 ; |Mode = OPEN_EXISTING
0041FA50 |. 6A 00 push 0 ; |pSecurity = NULL
0041FA52 |. 6A 03 push 3 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
0041FA54 |. 8D4C24 20 lea ecx,dword ptr ss:[esp+20] ; |
0041FA58 |. 68 00000080 push 80000000 ; |Access = GENERIC_READ
0041FA5D |. 51 push ecx ; |FileName = "?G"
0041FA5E |. FF15 54724700 call dword ptr ds:[<&kernel32.CreateFile>; \CreateFileA
0041FA64 |. 8BE8 mov ebp,eax
0041FA66 |. 83FD FF cmp ebp,-1
0041FA69 |. 75 0B jnz short unpacked.0041FA76
0041FA6B |. 5D pop ebp ; unpacked.00497078
0041FA6C |. 33C0 xor eax,eax
0041FA6E |. 5B pop ebx ; unpacked.00497078
0041FA6F |. 81C4 08010000 add esp,108
0041FA75 |. C3 retn
0041FA76 |> 8D5424 08 lea edx,dword ptr ss:[esp+8]
0041FA7A |. 52 push edx ; /pFileSizeHigh = NULL
0041FA7B |. 55 push ebp ; |hFile = NULL
0041FA7C |. FF15 C0734700 call dword ptr ds:[<&kernel32.GetFileSiz>; \GetFileSize
0041FA82 |. 8BD8 mov ebx,eax
0041FA84 |. 83FB FF cmp ebx,-1
0041FA87 |. 75 12 jnz short unpacked.0041FA9B
0041FA89 |. 55 push ebp ; /hObject = NULL
0041FA8A |. FF15 50724700 call dword ptr ds:[<&kernel32.CloseHandl>; \CloseHandle
0041FA90 |. 5D pop ebp ; unpacked.00497078
0041FA91 |. 33C0 xor eax,eax
0041FA93 |. 5B pop ebx ; unpacked.00497078
0041FA94 |. 81C4 08010000 add esp,108
0041FA9A |. C3 retn
0041FA9B |> 8B4424 08 mov eax,dword ptr ss:[esp+8]
0041FA9F |. 56 push esi ; unpacked.00497078
0041FAA0 |. 85C0 test eax,eax
0041FAA2 |. 57 push edi
0041FAA3 |. 75 06 jnz short unpacked.0041FAAB
0041FAA5 |. 8BFB mov edi,ebx
0041FAA7 |. 33F6 xor esi,esi ; unpacked.00497078
0041FAA9 |. EB 16 jmp short unpacked.0041FAC1
0041FAAB |> 6A 01 push 1
0041FAAD |. 6A 00 push 0
0041FAAF |. 6A 00 push 0
0041FAB1 |. 50 push eax
0041FAB2 |. E8 79F60100 call unpacked.0043F130
0041FAB7 |. 8BF8 mov edi,eax
0041FAB9 |. 33C0 xor eax,eax
0041FABB |. 8BF2 mov esi,edx
0041FABD |. 03FB add edi,ebx
0041FABF |. 13F0 adc esi,eax
0041FAC1 |> 55 push ebp ; /hObject = NULL
0041FAC2 |. FF15 50724700 call dword ptr ds:[<&kernel32.CloseHandl>; \CloseHandle
0041FAC8 |. 85F6 test esi,esi ; unpacked.00497078
0041FACA |. 7F 25 jg short unpacked.0041FAF1
0041FACC |. 7C 08 jl short unpacked.0041FAD6
0041FACE |. 81FF 90230B00 cmp edi,0B2390 ;
自校验2
0041FAD4 |. 77 1B ja short unpacked.0041FAF1
0041FAD6 |> 85F6 test esi,esi ; unpacked.00497078
0041FAD8 |. 7C 17 jl short unpacked.0041FAF1
0041FADA |. 7F 08 jg short unpacked.0041FAE4
0041FADC |. 81FF F09C0900 cmp edi,99CF0
0041FAE2 |. 72 0D jb short unpacked.0041FAF1
0041FAE4 |> 5F pop edi ; unpacked.00497078
0041FAE5 |. 5E pop esi ; unpacked.00497078
0041FAE6 |. 5D pop ebp ; unpacked.00497078
0041FAE7 |. 33C0 xor eax,eax
0041FAE9 |. 5B pop ebx ; unpacked.00497078
0041FAEA |. 81C4 08010000 add esp,108
0041FAF0 |. C3 retn
0041FAF1 |> 5F pop edi ; unpacked.00497078
0041FAF2 |. 5E pop esi ; unpacked.00497078
0041FAF3 |. 5D pop ebp ; unpacked.00497078
0041FAF4 |. B8 01000000 mov eax,1
0041FAF9 |. 5B pop ebx ; unpacked.00497078
0041FAFA |. 81C4 08010000 add esp,108
0041FB00 \. C3 retn
上面两个校验引起扫描时的异常。还有一个校验就是引起重启。