吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2439|回复: 6
收起左侧

[C&C++ 转载] shellcode小程序汇编查找kernel32 函数地址

[复制链接]
不名物 发表于 2020-5-17 10:45
本帖最后由 不名物 于 2020-5-17 10:51 编辑

前一阵子想要在exe中增加sleep汇编代码,一直不可行。专研了一阵子shellcode,终于实现了。
特奉上,见附件,抱歉没找到加附件的地方。
直接上代码吧:vc6

#include "stdafx.h"
#include "stdlib.h"
char shellcode[] = "\x31\xd2\xb2\x30\x64\x8b\x12\x8b\x52\x0c\x8b\x52\x1c\x8b\x42"
           "\x08\x8b\x72\x20\x8b\x12\x80\x7e\x0c\x33\x75\xf2\x89\xc7\x03"
           "\x78\x3c\x8b\x57\x78\x01\xc2\x8b\x7a\x20\x01\xc7\x31\xed\x8b"
           "\x34\xaf\x01\xc6\x45\x81\x3e"
                                                                        "\x53\x6C\x65\x65"        //Slee
                        "\x75\xf2"
                        "\x81\x7e""\x01"
                                                                        "\x6C\x65\x65\x70"    //p
                   "\x75\xe9"
                   "\x8b\x7a\x24\x01\xc7\x66\x8b\x2c"
           "\x6f\x8b\x7a\x1c\x01\xc7\x8b\x7c\xaf\xfc\x01\xc7"
                        "\x66\xB8"
                                        "\x90\x5F"                                                        //delay
//                                        "\0x0F\xB7\0xC0"                                                        //delay
                        "\x50\xFF\xd7";                                       

//int main(int argc, char **argv){int (*f)();f = (int (*)())shellcode;(int)(*f)();}
int main(int argc, char* argv[])
{
        int *ret;
        ret=(int *)&ret+2;
//        printf("Shellcode Length is : %d\n",strlen(shellcode));
        (*ret)=(int)shellcode;
        return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xiaohong 发表于 2020-5-17 10:46
感谢分享
 楼主| 不名物 发表于 2020-5-17 12:19
Tested on:     Win10 LTSC,Win8,Win7,WinVista,WinXP,Win2kPro,Win2k8,Win2k8R2,Win2k3
zy52pj 发表于 2020-5-17 13:01
sam喵喵 发表于 2020-5-17 22:55
zy52pj 发表于 2020-5-17 13:01
观摩…什么东西?

好像是在ret地址插入代码,ret之前可以执行。
有大佬出来传道授业一下吗
 楼主| 不名物 发表于 2020-5-20 14:08
zy52pj 发表于 2020-5-17 13:01
观摩…什么东西?

这个是在EXE中插入汇编代码,调用系统kernel自带的函数,例子里是查找sleep函数,并且用call调用
薛定谔消失的弦 发表于 2020-5-26 17:31
学习一下
cube 发表于 2020-6-24 00:06
sam喵喵 发表于 2020-5-17 22:55
好像是在ret地址插入代码,ret之前可以执行。
有大佬出来传道授业一下吗

翻译成下面的汇编.
[Asm] 纯文本查看 复制代码
;找kernel32的基址
xor edx,edx
mov dl,0x30
mov edx,dword ptr fs:[edx]
mov edx,dword ptr ds:[edx+0xC]
mov edx,dword ptr ds:[edx+0x1C]
loop1:
mov eax,dword ptr ds:[edx+0x8]
mov esi,dword ptr ds:[edx+0x20]
mov edx,dword ptr ds:[edx]
cmp byte ptr ds:[esi+0xC],0x33
jnz loop1
;找sleep函数地址
mov edi,eax
add edi,dword ptr ds:[eax+0x3C]
mov edx,dword ptr ds:[edi+0x78]
add edx,eax
mov edi,dword ptr ds:[edx+0x20]
add edi,eax
xor ebp,ebp
loop2:
mov esi,dword ptr ds:[edi+ebp*4]
add esi,eax
inc ebp
cmp dword ptr ds:[esi],0x65656C53
jnz loop2
cmp dword ptr ds:[esi+0x1],0x7065656C
jnz loop2
;调用sleep函数
mov edi,dword ptr ds:[edx+0x24]
add edi,eax
mov bp,word ptr ds:[edi+ebp*2]
mov edi,dword ptr ds:[edx+0x1C]
add edi,eax
mov edi,dword ptr ds:[edi+ebp*4-0x4] 
add edi,eax
mov ax,0x5F90
push eax
call edi
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-13 01:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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