2014-09-14

C# 注入DLL (Inject DLL by CSharp)

解說:http://www.javaworld.com.tw/roller/qing/entry/2007_5_18_DLL_injection
參考這篇 http://blog.csdn.net/intcry/article/details/6318596 程式碼

















看完一定會再找其他的,看這篇.http://wenku.baidu.com/view/cfdcc20ef12d2af90242e626.html
然後先去了解createremotethread是在幹什的。

通常都是注入一個非託管的dll(不是運行在CLR上),下面這是一個C++上的標準DLL,帶有DllMain(入口函數),不是普通的類庫DLL,而C#無法產生一個帶有入口函數的DLL。

以下這是要注入的非託管DLL代碼(打開txt檔寫入資料)
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
INT APIENTRY DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved) {
/* open file */
FILE *file;
fopen_s(&file, "C:\temp.txt", "a+");
switch(Reason) {
case DLL_PROCESS_ATTACH:
fprintf(file, "DLL attach function called.n");
break;
case DLL_PROCESS_DETACH:
fprintf(file, "DLL detach function called.n");
break;
case DLL_THREAD_ATTACH:
fprintf(file, "DLL thread attach function called.n");
break;
case DLL_THREAD_DETACH:
fprintf(file, "DLL thread detach function called.n");
break;
}
/* close file */
fclose(file);
return TRUE;
}
DllMain entry point :
An optional entry point into a dynamic-link library (DLL). When the system starts or terminates a process or thread, it calls the entry-point function for each loaded DLL using the first thread of the process. The system also calls the entry-point function for a DLL when it is loaded or unloaded using the LoadLibrary and FreeLibraryfunctions.


總結:
用什麼來寫加載DLL不會差太多。
要注入非託管DLL,直接注入。
要注入託管DLL,先注入非託管的DLL來加載CLR再去加載託管DLL。

完整的C++程式碼和說明提供C++使用者參考。


2014-09-12

C# AutoASM & Read and Write Process Memory

首先,這篇是用來對Procss寫入Assembly和讀寫記憶體的應用,對如何
取得Process程序裡的基址(baseAddress)和偏移(offset)就在另一篇另外說
名。

(1)如果有用過CE(Cheat Engine),就會知道可以直接寫入Assembly對程序進
行Hook的動作,只改寫原本的AOB(Array Of  Bytes )或者是在另外跳躍至
自行宣告的記憶體函數來進行更多動作。在這一方面,我採用了原本CE
的AutoAssembler.dll,裡面已經帶有可以直接寫入Asm的函數,需要做的就
是去引入dll並且宣告,然後在自己的程序中就能直接對其他程序寫入ASM

(因為C#中沒辦法使用直接使用像_asm這種東西,可以看這個說明,自行用
C++做出可以讓C#調用的DLL,就像AutoAssembler.dll或者這個這個。)

首先,我們先使用AutoASM來寫入

















在C#中宣告加以調用
[DllImportAttribute("ceautoassembler.dll", EntryPoint = "CEInitialize")]
        public static extern bool CEInitialize
        (
            int PassedPID,
            IntPtr handle
        );

[DllImportAttribute("ceautoassembler.dll", EntryPoint = "CEAutoAsm")]
        public static extern bool CEAutoAsm
        (
            string script,
            bool AllocID,
            int Alloc 
        );
可以很清楚的看出他要我們傳進哪些訊息。
在使用kernel32.dll裡的OpenProcess傳進pid和其他參數,取得Handle。

再來只要建一個TextBox讓使用者將Script貼上,再傳進CEAutoAsm就是
以前常見的打勾掛之一。

(2)直接使用kernel32.dll裡的ReadProcessMemory和WritePorcessMemory
下去寫入Bytes,寫入可以在其他地方用asm方式寫入看他的byte,記錄從多少
變為多少。讀取則是可以讀出byte後去翻譯成asm或者是其他資料型態(int,float)

















然而這只使用nop去替代原本那一行而已,如果要加入更多動作應該要再跳躍到空白
記憶體去寫入AOB。那要怎找出空白記憶體呢? 在AutoASM中是用Alloc下去分配空白
記憶體給你,我想在這邊也許也可以先用AutoASM先分配記憶體,再去寫入指令。
又或者,去查找有哪邊的AOB是 00 00 00這種連續一大排的,然後空間夠你寫入動作

2014-09-05

(League of Legends) DropHack解密


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

使用fail2ban來保護主機不被入侵



(1)安裝fail2ban
sudo apt-get install fail2ban

(2)備份jail.conf
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

(3)修改/etc/fail2ban/jail.conf
預設已經啟用ssh的保護服務
找到ssh進行修
範例如下
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
bantime  = 3600

查看狀態指令
fail2ban-client status ssh

啟動指令
service fail2ban start



更多詳盡介紹請見官網www.fail2ban.org/

Linux pptpd VPN(簡易式設定)



詳請點入Youtube影片網址查看說明

Linux server 安全性設定(ssh)

(1)sshd設定: ssh預設使用port 22來進行連接,改成其他port來進行連接。

/etc/ssh/sshd_config 裡Port 22 改為你想設定的port號










並且把root可以登入設定取消改為"PermitRootLogin no"










利用hosts.deny與hosts.allow 設定可以連線的ip,需先安裝tcpd(大部分sshd會內建)
可以先用此行指令確認
strings $(which sshd)| grep libwrap
得到結果如下可以直接修改hosts.deny與hosts.allow進行使用
libwrap.so.0
libwrap refuse returns
否則,
sudo apt-get install tcpd
修改hosts.allow如下範例
sshd: 202.54.1.20 64.66.44.22 64.66.44.25

相關設定請Google,在我使用的ubuntu 12.04,ssh提供了sftp,也就是要限制ftp的登入就不用另外限制。