原创 VS編譯faad2

FAAD2解碼器源碼下載地址 https://www.audiocoding.com/downloads.html VS打開\frontend\faad.sln編譯,出現一堆錯誤 error C2375: “lrintf”: 重定義;不同

原创 R3下枚舉進程DLL的幾種方法

一、Module32First、Module32Next void Enum1() { HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetCurrent

原创 【ASP.Net Core】DB First方式映射tinyint(1)字段的問題

數據庫字段類型是tinyint(1) 當使用DB First方式生成類文件時本地對應字段類型爲sbyte。查詢數據時引發異常 "Unable to cast object of type 'System.Boolean' to type

原创 HGE port for Delphi

HGE的Delphi版本是國外網友編寫的,非官方發佈。最新版本是1.7,發佈於2009年,適用於Delphi2007及以下版本。 https://www.pascalgamedevelopment.com/showthread.php?5

原创 【C#】讓自定義類變爲可迭代

假設有兩個類,一個學生類Student,它用來存儲一個學生的信息,如名字和年齡。第二個是學校類School,它是學生類的集合。接下來我們一點點的看可迭代對象是如何進化的 一、石器時代的寫法 using System; using Sys

原创 瞭解棧溢出攻擊與保護

棧溢出攻擊是個老話題了,本質上就是通過合法的方式輸入不符合規的數據來破壞棧上的數據,從而執行惡意代碼。 以下內容以x86程序來說明,x64大同小異。 0x01 棧的內存佈局 要了解如何攻擊,就要先掌握一個函數的棧空間裏是如何擺放數據的

原创 VC編譯選項“基本運行時檢查”的作用

從VS新建一個C++工程,Debug的配置中,“基本運行時檢查”這個選項默認值爲“兩者”,也就是同時包含“堆棧幀”和“未初始化的變量”檢查。 一、堆棧幀檢查 先將選項設置爲“默認值”,默認值意味着不檢查,寫一個這樣的函數 void t

原创 lame編程實現wav轉mp3後時長錯誤的問題

網上很多關於lame使用教程的代碼幾乎都是在使用lame_encode_flush後就結束了編碼工作,雖然編碼後的文件能播放,但是音頻顯示時長已經錯誤了,這會引起前進後退等操作出現問題。 使用官方的lame.exe去編碼就不會有問題,我於

原创 MFC文件對話框CFileDialog自動追加擴展名

第二個參數爲nullptr時,則用戶必須要輸入文件擴展名,否則GetFileExt等方法將返回一個空字符串 CFileDialog dialog(FALSE, nullptr, nullptr, OFN_HIDEREADONLY | O

原创 MFC修改控件的默認字體

MFC中控件的默認字體是這樣的 在Windows上設置控件字體的辦法是向該控件發送WM_SETFONT消息,但是如果窗口上控件過多的話則需要手動去遍歷控件,麻煩了點,好在MFC提供了一個SendMessageToDescendants方

原创 Android逆向之旅—解析編譯之後的Resource.arsc文件格式

原文鏈接:http://www.520monkey.com/archives/577 一、前言 快過年了,先提前祝賀大家新年快樂,這篇文章也是今年最後一篇了。今天我們繼續來看逆向的相關知

原创 Android應用程序資源的編譯和打包過程分析

原文鏈接:https://blog.csdn.net/luoshengyang/article/details/8744683         我們知道,在一個APK文件中,除了有代碼

原创 Android逆向之旅---解析編譯之後的AndroidManifest文件格式

原文鏈接:https://blog.csdn.net/jiangwei0910410003/article/details/50568487 致謝:感謝看雪論壇的MindMac大神提供

原创 Android逆向之旅—解析編譯之後的AndroidManifest文件格式

原文鏈接:http://www.520monkey.com/archives/575 一、前言 今天又是週六了,閒來無事,只能寫文章了呀,今天我們繼續來看逆向的相關知識,我們今天來介紹

原创 爲特定函數關閉緩衝區溢出檢查

VS項目在默認情況下會啓用緩衝區溢出檢查 來一個Demo typedef struct { int x[20]; } BUFFER; int foo() { BUFFER cb; cb.x[0] = 1; return 0