-
-
[原创]小逆了一下 "xlsdg的把100000000以内所有素数全部计算"
-
发表于: 2007-8-31 16:14 4289
-
小菜我对金山的考题望而却步啊,,,小逆一个程序缓解一下
【 程序下载地址:http://xlsdg.ys168.com 】File: PRIMES.EXE(不能上传就用作者提供的地址把)
Size: 6597 bytes
Version: 3.00
MD5: 29CDCFF6FE733F2B492DB39E18DFD550
SHA1: C323D32FA48BBC67AA53E6D1289495BED31364C8
CRC32: 9827143B
用RLPack V1.18 (LZMA 4.30) -> ap0x加壳,很简单的壳,用ESP定律就解决了,OEP 004011F0 用LOADPE完全脱壳,用Import REConstructor修复....Microsoft Visual Basic 5.0 / 6.0编写,运行后发现他会保存文件在__vbaFileOpen下断,断到,主要说一下他用的算法,他算素数的算法就是用的"用筛法" 就是先建立一个很大的数组来保存0/1散列,0代表的是素数,1代表的不是素数,通过"从自然数中(1除外)选一个最小的数,你可以大胆宣布它是素数,然后把剩下的所有自然数中是它的倍数的数全部去掉(筛去),接下来从剩下的数中再选一个最小的数重复上面的工作,这样就能求得所有的素数。"的方法来筛选00401964 . D95D E8 FSTP DWORD PTR SS:[EBP-18]
00401967 . 8B3D 20304000 MOV EDI, DWORD PTR DS:[403020] ; 01200020開始存储01 散列
0040196D . B9 03000000 MOV ECX, 3 ;从3开始因为素数出了2外都是奇数所以从3开始最后把2加上
00401972 . 894D E4 MOV DWORD PTR SS:[EBP-1C], ECX
00401975 > B8 10270000 MOV EAX, 2710 ; 当筛选素数值超过10000则将100000000内的所有非素数筛选完
0040197A . 66:3BC8 CMP CX, AX
0040197D . 7F 41 JG SHORT dumped_.004019C0
0040197F . 0FBFF1 MOVSX ESI, CX
00401982 . 385C3E FD CMP BYTE PTR DS:[ESI+EDI-3], BL ;检查要写入该位的数组是不是已经被筛选掉了,为1跳
00401986 . 75 2C JNZ SHORT dumped_.004019B4
00401988 . B8 00E1F505 MOV EAX, 5F5E100 ;100000000
0040198D . 99 CDQ
0040198E . F7FE IDIV ESI ;100000000除以筛选素数的商,作为筛选的范围
00401990 . 8BD6 MOV EDX, ESI
00401992 > 3BD0 CMP EDX, EAX 00401994 . 7F 1B JG SHORT dumped_.004019B1
00401996 . 8BCE MOV ECX, ESI
00401998 . 0FAFCA IMUL ECX, EDX ;把素数所有的倍数全部筛出去
0040199B . 385C39 FD CMP BYTE PTR DS:[ECX+EDI-3], BL
0040199F . 8D4C39 FD LEA ECX, DWORD PTR DS:[ECX+EDI-3]
004019A3 . 75 03 JNZ SHORT dumped_.004019A8
004019A5 . C601 01 MOV BYTE PTR DS:[ECX], 1
004019A8 > B9 02000000 MOV ECX, 2 ;加2 只检测奇数
004019AD . 03D1 ADD EDX, ECX
004019AF .^ EB E1 JMP SHORT dumped_.00401992
004019B1 > 8B4D E4 MOV ECX, DWORD PTR SS:[EBP-1C]
004019B4 > B8 02000000 MOV EAX, 2
004019B9 . 03C8 ADD ECX, EAX ;加2
004019BB . 894D E4 MOV DWORD PTR SS:[EBP-1C], ECX
004019BE .^ EB B5 JMP SHORT dumped_.00401975unsigned char bitmap[100000000]={0};for (int i = 3;i <= 10000; i+=2)
{
if (bitmap[i])
{
continue;
}
else
{
int tmp = 100000000 / i;
for (int j = 3;j <= tmp; j+=2)
{
bitmap[j * i] = 1;
}
}
}00401C06 . D95D E0 FSTP DWORD PTR SS:[EBP-20]
00401C09 . 8B35 98104000 MOV ESI, DWORD PTR DS:[<&msvbvm60.__vbaStrMov>; msvbvm60.__vbaStrMove
00401C0F . B9 03000000 MOV ECX, 3 ; 大循环从3开始
00401C14 . 894D EC MOV DWORD PTR SS:[EBP-14], ECX
00401C17 > B8 00E1F505 MOV EAX, 5F5E100 ; 100000000
00401C1C . 3BC8 CMP ECX, EAX
00401C1E . 0F8F 62010000 JG dumped_.00401D86
00401C24 . A1 20304000 MOV EAX, DWORD PTR DS:[403020]
00401C29 . 385C08 FD CMP BYTE PTR DS:[EAX+ECX-3], BL ;检测标记位是不是1是1跳过
00401C2D . 0F85 41010000 JNZ dumped_.00401D74
00401C33 . 8B55 E8 MOV EDX, DWORD PTR SS:[EBP-18]
00401C36 . 52 PUSH EDX
00401C37 . 8D85 60FFFFFF LEA EAX, DWORD PTR SS:[EBP-A0]
00401C3D . 8D4D EC LEA ECX, DWORD PTR SS:[EBP-14]
00401C40 . 50 PUSH EAX
00401C41 . 47 INC EDI
00401C42 . 898D 68FFFFFF MOV DWORD PTR SS:[EBP-98], ECX
00401C48 . C785 60FFFFFF>MOV DWORD PTR SS:[EBP-A0], 4003
00401C52 . FF15 64104000 CALL DWORD PTR DS:[<&msvbvm60.rtcStrFromVar>] ; msvbvm60.rtcStrFromVar
00401C58 . 8BD0 MOV EDX, EAX
00401C5A . 8D4D DC LEA ECX, DWORD PTR SS:[EBP-24]
00401C5D . FFD6 CALL ESI
00401C5F . 50 PUSH EAX
00401C60 . FF15 1C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCat>] ; msvbvm60.__vbaStrCat
00401C66 . 8BD0 MOV EDX, EAX
00401C68 . 8D4D E8 LEA ECX, DWORD PTR SS:[EBP-18]
00401C6B . FFD6 CALL ESI
00401C6D . 8D4D DC LEA ECX, DWORD PTR SS:[EBP-24]
00401C70 . FF15 AC104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeStr>] ; msvbvm60.__vbaFreeStr
00401C76 . 66:81FF 2B02 CMP DI, 22B ;素数个数为555写一次文件
00401C7B . 0F85 F3000000 JNZ dumped_.00401D74
00401C81 . 391D E4324000 CMP DWORD PTR DS:[4032E4], EBX
00401C87 . 75 10 JNZ SHORT dumped_.00401C99
00401C89 . 68 E4324000 PUSH dumped_.004032E4
00401C8E . 68 E4164000 PUSH dumped_.004016E4
00401C93 . FF15 70104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaNew2>] ; msvbvm60.__vbaNew2
00401C99 > 8B3D E4324000 MOV EDI, DWORD PTR DS:[4032E4]
00401C9F . 8B0F MOV ECX, DWORD PTR DS:[EDI]
00401CA1 . 8D55 D0 LEA EDX, DWORD PTR SS:[EBP-30]
00401CA4 . 52 PUSH EDX
00401CA5 . 57 PUSH EDI
00401CA6 . FF51 14 CALL DWORD PTR DS:[ECX+14]
00401CA9 . DBE2 FCLEX
00401CAB . 3BC3 CMP EAX, EBX
00401CAD . 7D 0F JGE SHORT dumped_.00401CBE
00401CAF . 6A 14 PUSH 14
00401CB1 . 68 D4164000 PUSH dumped_.004016D4
00401CB6 . 57 PUSH EDI
00401CB7 . 50 PUSH EAX
00401CB8 . FF15 20104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaHresultChec>; msvbvm60.__vbaHresultCheckObj
00401CBE > 8B45 D0 MOV EAX, DWORD PTR SS:[EBP-30] ; msvbvm60.6A29A7C4
00401CC1 . 8B08 MOV ECX, DWORD PTR DS:[EAX]
00401CC3 . 8D55 DC LEA EDX, DWORD PTR SS:[EBP-24]
00401CC6 . 52 PUSH EDX
00401CC7 . 50 PUSH EAX
00401CC8 . 8BF8 MOV EDI, EAX
00401CCA . FF51 50 CALL DWORD PTR DS:[ECX+50]
00401CCD . DBE2 FCLEX
00401CCF . 3BC3 CMP EAX, EBX
00401CD1 . 7D 0F JGE SHORT dumped_.00401CE2
00401CD3 . 6A 50 PUSH 50
00401CD5 . 68 F4164000 PUSH dumped_.004016F4
00401CDA . 57 PUSH EDI
00401CDB . 50 PUSH EAX
00401CDC . FF15 20104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaHresultChec>; msvbvm60.__vbaHresultCheckObj
00401CE2 > 8B45 DC MOV EAX, DWORD PTR SS:[EBP-24]
00401CE5 . 50 PUSH EAX
00401CE6 . 68 08174000 PUSH dumped_.00401708 ; UNICODE "\\PRIMES.TXT"
00401CEB . FF15 1C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCat>] ; msvbvm60.__vbaStrCat
00401CF1 . 8BD0 MOV EDX, EAX
00401CF3 . 8D4D D8 LEA ECX, DWORD PTR SS:[EBP-28]
00401CF6 . FFD6 CALL ESI
00401CF8 . 50 PUSH EAX
00401CF9 . 6A 01 PUSH 1
00401CFB . 6A FF PUSH -1
00401CFD . 6A 08 PUSH 8
00401CFF . FF15 6C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFileOpen>] ; msvbvm60.__vbaFileOpen
00401D05 . 8B3D 80104000 MOV EDI, DWORD PTR DS:[<&msvbvm60.__vbaFreeSt>; msvbvm60.__vbaFreeStrList
00401D0B . 8D4D D8 LEA ECX, DWORD PTR SS:[EBP-28]
00401D0E . 51 PUSH ECX
00401D0F . 8D55 DC LEA EDX, DWORD PTR SS:[EBP-24]
00401D12 . 52 PUSH EDX
00401D13 . 6A 02 PUSH 2
00401D15 . FFD7 CALL EDI ; <&msvbvm60.__vbaFreeStrList>
00401D17 . 83C4 0C ADD ESP, 0C
00401D1A . 8D4D D0 LEA ECX, DWORD PTR SS:[EBP-30]
00401D1D . FF15 B0104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeObj>] ; msvbvm60.__vbaFreeObj
00401D23 . 8B45 E8 MOV EAX, DWORD PTR SS:[EBP-18]
00401D26 . 50 PUSH EAX
00401D27 . FF15 18104000 CALL DWORD PTR DS:[<&msvbvm60.rtcTrimBstr>] ; msvbvm60.rtcTrimBstr
00401D2D . 8BD0 MOV EDX, EAX
00401D2F . 8D4D D8 LEA ECX, DWORD PTR SS:[EBP-28]
00401D32 . FFD6 CALL ESI
00401D34 . 8B55 D8 MOV EDX, DWORD PTR SS:[EBP-28]
00401D37 . 8D4D DC LEA ECX, DWORD PTR SS:[EBP-24]
00401D3A . 895D D8 MOV DWORD PTR SS:[EBP-28], EBX
00401D3D . FFD6 CALL ESI
00401D3F . 50 PUSH EAX
00401D40 . 6A 01 PUSH 1
00401D42 . 68 24174000 PUSH dumped_.00401724
00401D47 . FF15 50104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaPrintFile>] ; msvbvm60.__vbaPrintFile
00401D4D . 8D4D D8 LEA ECX, DWORD PTR SS:[EBP-28]
00401D50 . 51 PUSH ECX
00401D51 . 8D55 DC LEA EDX, DWORD PTR SS:[EBP-24]
00401D54 . 52 PUSH EDX
00401D55 . 6A 02 PUSH 2
00401D57 . FFD7 CALL EDI ; <&msvbvm60.__vbaFreeStrList>
00401D59 . 83C4 18 ADD ESP, 18
00401D5C . 6A 01 PUSH 1
00401D5E . FF15 40104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFileClose>] ; msvbvm60.__vbaFileClose
00401D64 . BA 2C174000 MOV EDX, dumped_.0040172C
00401D69 . 8D4D E8 LEA ECX, DWORD PTR SS:[EBP-18]
00401D6C . 33FF XOR EDI, EDI
00401D6E . FF15 7C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCopy>] ; msvbvm60.__vbaStrCopy
00401D74 > 8B4D EC MOV ECX, DWORD PTR SS:[EBP-14] ; msvbvm60.6A29A7C4
00401D77 . B8 02000000 MOV EAX, 2
00401D7C . 03C8 ADD ECX, EAX ; 加2
00401D7E . 894D EC MOV DWORD PTR SS:[EBP-14], ECX
00401D81 .^ E9 91FEFFFF JMP dumped_.00401C17写文件的原码就不写了
http://hi.baidu.com/xdct/blog/item/366f5e81126beedabd3e1e51.html
【 程序下载地址:http://xlsdg.ys168.com 】File: PRIMES.EXE(不能上传就用作者提供的地址把)
Size: 6597 bytes
Version: 3.00
MD5: 29CDCFF6FE733F2B492DB39E18DFD550
SHA1: C323D32FA48BBC67AA53E6D1289495BED31364C8
CRC32: 9827143B
用RLPack V1.18 (LZMA 4.30) -> ap0x加壳,很简单的壳,用ESP定律就解决了,OEP 004011F0 用LOADPE完全脱壳,用Import REConstructor修复....Microsoft Visual Basic 5.0 / 6.0编写,运行后发现他会保存文件在__vbaFileOpen下断,断到,主要说一下他用的算法,他算素数的算法就是用的"用筛法" 就是先建立一个很大的数组来保存0/1散列,0代表的是素数,1代表的不是素数,通过"从自然数中(1除外)选一个最小的数,你可以大胆宣布它是素数,然后把剩下的所有自然数中是它的倍数的数全部去掉(筛去),接下来从剩下的数中再选一个最小的数重复上面的工作,这样就能求得所有的素数。"的方法来筛选00401964 . D95D E8 FSTP DWORD PTR SS:[EBP-18]
00401967 . 8B3D 20304000 MOV EDI, DWORD PTR DS:[403020] ; 01200020開始存储01 散列
0040196D . B9 03000000 MOV ECX, 3 ;从3开始因为素数出了2外都是奇数所以从3开始最后把2加上
00401972 . 894D E4 MOV DWORD PTR SS:[EBP-1C], ECX
00401975 > B8 10270000 MOV EAX, 2710 ; 当筛选素数值超过10000则将100000000内的所有非素数筛选完
0040197A . 66:3BC8 CMP CX, AX
0040197D . 7F 41 JG SHORT dumped_.004019C0
0040197F . 0FBFF1 MOVSX ESI, CX
00401982 . 385C3E FD CMP BYTE PTR DS:[ESI+EDI-3], BL ;检查要写入该位的数组是不是已经被筛选掉了,为1跳
00401986 . 75 2C JNZ SHORT dumped_.004019B4
00401988 . B8 00E1F505 MOV EAX, 5F5E100 ;100000000
0040198D . 99 CDQ
0040198E . F7FE IDIV ESI ;100000000除以筛选素数的商,作为筛选的范围
00401990 . 8BD6 MOV EDX, ESI
00401992 > 3BD0 CMP EDX, EAX 00401994 . 7F 1B JG SHORT dumped_.004019B1
00401996 . 8BCE MOV ECX, ESI
00401998 . 0FAFCA IMUL ECX, EDX ;把素数所有的倍数全部筛出去
0040199B . 385C39 FD CMP BYTE PTR DS:[ECX+EDI-3], BL
0040199F . 8D4C39 FD LEA ECX, DWORD PTR DS:[ECX+EDI-3]
004019A3 . 75 03 JNZ SHORT dumped_.004019A8
004019A5 . C601 01 MOV BYTE PTR DS:[ECX], 1
004019A8 > B9 02000000 MOV ECX, 2 ;加2 只检测奇数
004019AD . 03D1 ADD EDX, ECX
004019AF .^ EB E1 JMP SHORT dumped_.00401992
004019B1 > 8B4D E4 MOV ECX, DWORD PTR SS:[EBP-1C]
004019B4 > B8 02000000 MOV EAX, 2
004019B9 . 03C8 ADD ECX, EAX ;加2
004019BB . 894D E4 MOV DWORD PTR SS:[EBP-1C], ECX
004019BE .^ EB B5 JMP SHORT dumped_.00401975unsigned char bitmap[100000000]={0};for (int i = 3;i <= 10000; i+=2)
{
if (bitmap[i])
{
continue;
}
else
{
int tmp = 100000000 / i;
for (int j = 3;j <= tmp; j+=2)
{
bitmap[j * i] = 1;
}
}
}00401C06 . D95D E0 FSTP DWORD PTR SS:[EBP-20]
00401C09 . 8B35 98104000 MOV ESI, DWORD PTR DS:[<&msvbvm60.__vbaStrMov>; msvbvm60.__vbaStrMove
00401C0F . B9 03000000 MOV ECX, 3 ; 大循环从3开始
00401C14 . 894D EC MOV DWORD PTR SS:[EBP-14], ECX
00401C17 > B8 00E1F505 MOV EAX, 5F5E100 ; 100000000
00401C1C . 3BC8 CMP ECX, EAX
00401C1E . 0F8F 62010000 JG dumped_.00401D86
00401C24 . A1 20304000 MOV EAX, DWORD PTR DS:[403020]
00401C29 . 385C08 FD CMP BYTE PTR DS:[EAX+ECX-3], BL ;检测标记位是不是1是1跳过
00401C2D . 0F85 41010000 JNZ dumped_.00401D74
00401C33 . 8B55 E8 MOV EDX, DWORD PTR SS:[EBP-18]
00401C36 . 52 PUSH EDX
00401C37 . 8D85 60FFFFFF LEA EAX, DWORD PTR SS:[EBP-A0]
00401C3D . 8D4D EC LEA ECX, DWORD PTR SS:[EBP-14]
00401C40 . 50 PUSH EAX
00401C41 . 47 INC EDI
00401C42 . 898D 68FFFFFF MOV DWORD PTR SS:[EBP-98], ECX
00401C48 . C785 60FFFFFF>MOV DWORD PTR SS:[EBP-A0], 4003
00401C52 . FF15 64104000 CALL DWORD PTR DS:[<&msvbvm60.rtcStrFromVar>] ; msvbvm60.rtcStrFromVar
00401C58 . 8BD0 MOV EDX, EAX
00401C5A . 8D4D DC LEA ECX, DWORD PTR SS:[EBP-24]
00401C5D . FFD6 CALL ESI
00401C5F . 50 PUSH EAX
00401C60 . FF15 1C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCat>] ; msvbvm60.__vbaStrCat
00401C66 . 8BD0 MOV EDX, EAX
00401C68 . 8D4D E8 LEA ECX, DWORD PTR SS:[EBP-18]
00401C6B . FFD6 CALL ESI
00401C6D . 8D4D DC LEA ECX, DWORD PTR SS:[EBP-24]
00401C70 . FF15 AC104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeStr>] ; msvbvm60.__vbaFreeStr
00401C76 . 66:81FF 2B02 CMP DI, 22B ;素数个数为555写一次文件
00401C7B . 0F85 F3000000 JNZ dumped_.00401D74
00401C81 . 391D E4324000 CMP DWORD PTR DS:[4032E4], EBX
00401C87 . 75 10 JNZ SHORT dumped_.00401C99
00401C89 . 68 E4324000 PUSH dumped_.004032E4
00401C8E . 68 E4164000 PUSH dumped_.004016E4
00401C93 . FF15 70104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaNew2>] ; msvbvm60.__vbaNew2
00401C99 > 8B3D E4324000 MOV EDI, DWORD PTR DS:[4032E4]
00401C9F . 8B0F MOV ECX, DWORD PTR DS:[EDI]
00401CA1 . 8D55 D0 LEA EDX, DWORD PTR SS:[EBP-30]
00401CA4 . 52 PUSH EDX
00401CA5 . 57 PUSH EDI
00401CA6 . FF51 14 CALL DWORD PTR DS:[ECX+14]
00401CA9 . DBE2 FCLEX
00401CAB . 3BC3 CMP EAX, EBX
00401CAD . 7D 0F JGE SHORT dumped_.00401CBE
00401CAF . 6A 14 PUSH 14
00401CB1 . 68 D4164000 PUSH dumped_.004016D4
00401CB6 . 57 PUSH EDI
00401CB7 . 50 PUSH EAX
00401CB8 . FF15 20104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaHresultChec>; msvbvm60.__vbaHresultCheckObj
00401CBE > 8B45 D0 MOV EAX, DWORD PTR SS:[EBP-30] ; msvbvm60.6A29A7C4
00401CC1 . 8B08 MOV ECX, DWORD PTR DS:[EAX]
00401CC3 . 8D55 DC LEA EDX, DWORD PTR SS:[EBP-24]
00401CC6 . 52 PUSH EDX
00401CC7 . 50 PUSH EAX
00401CC8 . 8BF8 MOV EDI, EAX
00401CCA . FF51 50 CALL DWORD PTR DS:[ECX+50]
00401CCD . DBE2 FCLEX
00401CCF . 3BC3 CMP EAX, EBX
00401CD1 . 7D 0F JGE SHORT dumped_.00401CE2
00401CD3 . 6A 50 PUSH 50
00401CD5 . 68 F4164000 PUSH dumped_.004016F4
00401CDA . 57 PUSH EDI
00401CDB . 50 PUSH EAX
00401CDC . FF15 20104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaHresultChec>; msvbvm60.__vbaHresultCheckObj
00401CE2 > 8B45 DC MOV EAX, DWORD PTR SS:[EBP-24]
00401CE5 . 50 PUSH EAX
00401CE6 . 68 08174000 PUSH dumped_.00401708 ; UNICODE "\\PRIMES.TXT"
00401CEB . FF15 1C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCat>] ; msvbvm60.__vbaStrCat
00401CF1 . 8BD0 MOV EDX, EAX
00401CF3 . 8D4D D8 LEA ECX, DWORD PTR SS:[EBP-28]
00401CF6 . FFD6 CALL ESI
00401CF8 . 50 PUSH EAX
00401CF9 . 6A 01 PUSH 1
00401CFB . 6A FF PUSH -1
00401CFD . 6A 08 PUSH 8
00401CFF . FF15 6C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFileOpen>] ; msvbvm60.__vbaFileOpen
00401D05 . 8B3D 80104000 MOV EDI, DWORD PTR DS:[<&msvbvm60.__vbaFreeSt>; msvbvm60.__vbaFreeStrList
00401D0B . 8D4D D8 LEA ECX, DWORD PTR SS:[EBP-28]
00401D0E . 51 PUSH ECX
00401D0F . 8D55 DC LEA EDX, DWORD PTR SS:[EBP-24]
00401D12 . 52 PUSH EDX
00401D13 . 6A 02 PUSH 2
00401D15 . FFD7 CALL EDI ; <&msvbvm60.__vbaFreeStrList>
00401D17 . 83C4 0C ADD ESP, 0C
00401D1A . 8D4D D0 LEA ECX, DWORD PTR SS:[EBP-30]
00401D1D . FF15 B0104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeObj>] ; msvbvm60.__vbaFreeObj
00401D23 . 8B45 E8 MOV EAX, DWORD PTR SS:[EBP-18]
00401D26 . 50 PUSH EAX
00401D27 . FF15 18104000 CALL DWORD PTR DS:[<&msvbvm60.rtcTrimBstr>] ; msvbvm60.rtcTrimBstr
00401D2D . 8BD0 MOV EDX, EAX
00401D2F . 8D4D D8 LEA ECX, DWORD PTR SS:[EBP-28]
00401D32 . FFD6 CALL ESI
00401D34 . 8B55 D8 MOV EDX, DWORD PTR SS:[EBP-28]
00401D37 . 8D4D DC LEA ECX, DWORD PTR SS:[EBP-24]
00401D3A . 895D D8 MOV DWORD PTR SS:[EBP-28], EBX
00401D3D . FFD6 CALL ESI
00401D3F . 50 PUSH EAX
00401D40 . 6A 01 PUSH 1
00401D42 . 68 24174000 PUSH dumped_.00401724
00401D47 . FF15 50104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaPrintFile>] ; msvbvm60.__vbaPrintFile
00401D4D . 8D4D D8 LEA ECX, DWORD PTR SS:[EBP-28]
00401D50 . 51 PUSH ECX
00401D51 . 8D55 DC LEA EDX, DWORD PTR SS:[EBP-24]
00401D54 . 52 PUSH EDX
00401D55 . 6A 02 PUSH 2
00401D57 . FFD7 CALL EDI ; <&msvbvm60.__vbaFreeStrList>
00401D59 . 83C4 18 ADD ESP, 18
00401D5C . 6A 01 PUSH 1
00401D5E . FF15 40104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFileClose>] ; msvbvm60.__vbaFileClose
00401D64 . BA 2C174000 MOV EDX, dumped_.0040172C
00401D69 . 8D4D E8 LEA ECX, DWORD PTR SS:[EBP-18]
00401D6C . 33FF XOR EDI, EDI
00401D6E . FF15 7C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCopy>] ; msvbvm60.__vbaStrCopy
00401D74 > 8B4D EC MOV ECX, DWORD PTR SS:[EBP-14] ; msvbvm60.6A29A7C4
00401D77 . B8 02000000 MOV EAX, 2
00401D7C . 03C8 ADD ECX, EAX ; 加2
00401D7E . 894D EC MOV DWORD PTR SS:[EBP-14], ECX
00401D81 .^ E9 91FEFFFF JMP dumped_.00401C17写文件的原码就不写了
http://hi.baidu.com/xdct/blog/item/366f5e81126beedabd3e1e51.html
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: