原创 Windows內核基礎之權限級別

權限級別是CPU中的一個概念,CPU中包含4個權限級別,分別是0環,1環,2環,3環,CPU設計製造商最初希望0環用於運行內核,1環和2環運行設備驅動,3環運行應用程序,但是系統設計者爲了簡單將驅動和內核都放在0環,應用程序放在

原创 手動獲取函數地址

編寫病毒程序時,由於各種原因不能直接調用函數,所以需要手動獲取到函數然後調用它。最常見手動獲取函數地址的方法是通過獲取kernel32.dll句柄,然後遍歷kernel32.dll的導出表找到它的GetProcAddress()函

原创 Windows內核基礎之虛擬內存空間佈局

32位Windows操作系統支持32位尋址,因此2的32次方就等於4GB,每個程序在運行時都會被映射進4GB空間的內存空間,這4GB空間不全是用戶可以使用的,其中0x7fffffff-0xffffffff是2GB的內核空間,這部分

原创 Android 動態代碼自修改原理

1.原理 DexClassDef -> DexClassData -> DexMethod -> DexCode 裏面的 u2 insns 的值是用於存放程序實現代碼的地方。 程序執行時候會把整個 dex 文件加載到內存中,然後動

原创 xss挑戰1-20關全通Writeup

XSS挑戰 在線:https://xss.tesla-space.com/ 源碼:https://github.com/rebo-rn/xss-lab level 1 最基本的xss 看源碼 payload xss level

原创 CNNVD漏洞分類指南

文章目錄適用範圍說明漏洞類型漏洞類型描述配置錯誤(CWE-16: Configuration)描述漏洞實例代碼問題(CWE-17: Code)描述與其他漏洞類型關係漏洞實例資源管理錯誤(CWE-399: Resource Mana

原创 Android dex函數指令修改

1.原理 要了解dex函數指令修改原理,需要先弄懂dex文件結構,結構裏面有個insns ,是用於存放程序實現代碼的地方。 程序執行時候會把整個 dex 文件加載到內存中,然後動態地解析執行 insns 中的內容,只要修改了裏面的數據

原创 Xposed的基本使用方法

1.Xposed介紹和安裝 Xposed 是Android 系統兩大 Hook 框架之一,另一個 Cydia Substrate 主要面向 native 的 hook,而 Xposed 是面向 java 層的 hook。 它的使用非常

原创 阿里殼2016

將殼拖入AK中分析,入口點已經修改成了StubApplication 調用了方法attachBaseContext 這個方法比onCreate調用的更早,很多殼會在這個方法中對原始程序進行還原 除此之外還加載了mobisec.so

原创 so文件混淆與修復

一、對section header進行混淆 由於linker不會對section header進行加載,所以對section header進行改動,不會影響so文件正常加載到內存,因此有些程序對section header進行了混淆,

原创 Eclipse中進行Jni編程

Eclipse Jni環境搭建 1.在eclipse中選擇Windows->Preferences->Android->NDK,設置NDK的位置。 如果Android下沒有NDK,需要下載個插件:鏈接:https://pan.bai

原创 Android Studio中進行Jni編程

1.介紹 Android程序分2層,java層與native層,java層編譯爲dex文件,native層編譯爲so動態庫。兩者使用jni(java native interface)來進行連接。 2.在Android Studio中

原创 160個Crackme之004 ajj.1

作者:ajj 難度:★★ 保護方式:Name/Serial(Delphi) 運行程序 程序沒有確定按鈕,所以直接丟到OD中分析。 雖然沒有確定按鈕,但是有輸入框,所以應該調用了GetItemTextA,所以只要在OD中給這個API下

原创 160個Crackme之001 Acid_burn

1.概述 作者:Acid burn 難度:★ 保護方式:Nag,Name/Serial,Serial 運行Acid burn.exe,啓動界面如下: ![hello you have to kill me! Welcorne to

原创 160個Crackme之002 Afkayas.1

1.概述 作者:Afkayas 難度:★ 保護方式:Name/Serial(VB5) 運行程序 輸入用戶名tutucoo,序列號12345678,彈出對話框 2. 分析 首先查找字符串,跳轉到字符串代碼,向上查找到函數起始位置,下