|
|
|
|
|
我以前写的一个壳(已放上源程序,在47楼)
谢谢楼主提供源程序和耐心解释, 让我学到不少东西! 这两天我都在学习中。 这里又有几处不能肯定的地方,请指教: 程序中check_thread proc para 1: mov ebx,para lea eax,seh1[ebx] invoke set_seh,1,eax ct0: @@: test flag_thread_end[ebx],1 该线程启动后不会满足退出条件, 是吗? jnz ct9 test flag_thread_active[ebx],1 jz @b 2: checkAPI_thread proc para mov ebx,para lea eax,seh1[ebx] invoke set_seh,1,eax ca0: test flag_thread_end[ebx],100b 该线程启动后就不会满足退出条件, 是吗? jnz ca9 cld ca1: 3: or flag_thread_active[ebx],10b ;active decode @@: test flag_thread_finish[ebx],10b 这里作为主线程。 我找不到结束循环条件, 不知怎么进入第二个入口点。 int 0f7h jz @b jmp _ok lea eax,second_entry[ebx] mov dword ptr proc_ret_addr[ebx+1],eax popad popfd proc_ret_addr label byte ;!!! push 12345678h ;!!! ret isnot? proc stdcall uses eax ecx edx pt mov ecx,0 mov edx,pt 4: 问个愚蠢的问题。 不知同一dll文件在内存中可以装入两次吗?第一个进程引入第二个进程才能解吗? |
|
我以前写的一个壳(已放上源程序,在47楼)
谢谢楼主!还有一些不解这处请指教! 若ofs 当作偏址则mov eax,[ofs]与mov eax,ofs等效?是吗? 另外下在返回ret 4*4有些不理解这里退一级seh我的理解用ret 2*4就可以我不知我错在哪? entry1: ;!!! cld call get_knl_base push eax lea ecx,p_ll[ebx] invoke get_func_address,eax,ecx mov f_LoadLibrary[ebx],eax pop eax mov knl_base[ebx],eax lea edi,p_funcnames[ebx] lea esi,p_funcs[ebx] @@: cmp byte ptr [edi],0 je @f mov eax,knl_base[ebx] invoke get_func_address,eax,edi mov [esi],eax add esi,4 mov ecx,-1 mov al,0 repne scasb je @b @@: lea eax,user32name[ebx] push eax call f_LoadLibrary[ebx] mov hUser32[ebx],eax lea ecx,p_msgbox[ebx] invoke get_func_address,eax,ecx mov f_MessageBox[ebx],eax ;;;mov check1[ebx],0 ;call disp1 cmp file_type[ebx],1 ;exe je is_exe cmp file_type[ebx],2 ;dll jne error_exit cmp dword ptr [esp+24h+4+4],1 这里 [esp+24h+4+4]内存的什么数这里有个什么数据结构? ;dll_process_attach jne dll_ret mov eax,[esp+24h+4+0] mov hModule[ebx],eax push eax call f_DisableThreadLibraryCalls[ebx] |
|
我以前写的一个壳(已放上源程序,在47楼)
请教楼主两个问题? get_knl_base proc ;得到 kernel32.dll 基址 assume fs:nothing mov eax,fs:[0] check_int3_0 push edx @@: cmp dword ptr [eax],-1 请楼主解释一下,通过这里为什么可 je @f 得到 kernel32.dll 基址? mov eax,[eax] jmp @b @@: mov eax,[eax+4] and eax,0ffff0000h @@1: cmp word ptr [eax],'ZM' je @f sub eax,10000h jmp @@1 set_seh proc uses eax flag,ofs assume fs:nothing cmp flag,0 check_int3 je @f mov eax,fs:[0] mov flag,eax lea eax,flag mov fs:[0],eax jmp ss9 @@: mov eax,[ofs+4] 这里的ofs值是堆栈地址,还是堆栈内 的值(则为0)? mov fs:[0],eax ret 4*4 ss9: ret 0 set_seh endp |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值