1. 程式人生 > >給C語言新增花指令,抵禦反彙編

給C語言新增花指令,抵禦反彙編

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int       nCmdShow) { /********************************************************   1. 定義字串   ********************************************************/   TCHAR MsgBoxA[MAX_PATH]="MessageBoxA"; /********************************************************
  2. 獲取MessageBoxA的函式地址   ********************************************************/   HMODULE hMod=LoadLibrary("user32.dll");   MYFUNC func=(MYFUNC)GetProcAddress(hMod,MsgBoxA);//獲取MessageBoxA的函式地址。   func(0,"Reverse Me","Test",0);//呼叫MessageBoxA函式。 FreeLibrary(hMod); return0; } IDA中(V5.4 .text:0040102E                 mov     eax
, dword ptr ds:aMessageboxa ;"MessageBoxA" .text:00401033                 mov     dword ptr [ebp+ProcName], eax .text:00401039                 mov     ecx, dword ptr ds:aMessageboxa+4 .text:0040103F                 mov     [ebp+var_100], ecx .text:00401045                 mov     edx, dword ptr ds:aMessageboxa+8 .text
:0040104B                 mov     [ebp+var_FC], edx .text:00401051                 mov     ecx,3Eh .text:00401056                 xor     eax, eax .text:00401058                 lea     edi,[ebp+var_F8] .text:0040105E                 rep stosd .text:00401060                 mov     esi, esp .text:00401062                 push    offset LibFileName;"user32.dll" .text:00401067                 call    ds:[email protected] ;LoadLibraryA(x) .text:0040106D                 cmp     esi, esp .text:0040106F                 call    __chkesp .text:00401074                 mov     [ebp+hLibModule], eax .text:0040107A                 mov     esi, esp .text:0040107C                 lea     eax,[ebp+ProcName] .text:00401082                 push    eax             ; lpProcName .text:00401083                 mov     ecx,[ebp+hLibModule] .text:00401089                 push    ecx             ; hModule .text:0040108A                 call    ds:[email protected] ;GetProcAddress(x,x) .text:00401090                 cmp     esi, esp .text:00401092                 call    __chkesp .text:00401097                 mov     [ebp+var_10C], eax .text:0040109D                 mov     esi, esp .text:0040109F                 push    0 .text:004010A1                 push    offset aTest    ;"Test" .text:004010A6                 push    offset aReverseMe ;"Reverse Me" .text:004010AB                 push    0 .text:004010AD                 call    [ebp+var_10C] OD中:

相關推薦

C語言新增指令抵禦彙編

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int       nCmdShow) { /*************************************************

一個學習C語言的好網站推薦大家

你是否在疑問“C語言學習完了以後該怎麼深入學習?” 你是否在疑惑“怎麼學了一年的C語言還是什麼都不會寫?” 你是否在迷茫“C、Java、C#……一大堆語言,我學哪個才能對以後就業有幫助?” 來學《C語言也能幹大事》吧,它將解除你內心的疑惑,伴你走上成功之路。所有視訊、板書都

C 語言的一個錯誤沒找出原因

amp n) string getc bsp can 什麽 數據 能夠 #include <stdio.h>#include <stdlib.h>#include <string.h> intmain(void){ char str[51

C 語言popen函數實現shell和讀取內容

原型 stream printf fclose strong get cmd 包含 文件 1. popen()函數 頭文件:#include <stdio.h> 函數原型:FILE * popen(const char * command, const char

C語言 輸入一個小數輸出它的立方。輸出保留小數點後的2位數字

c //輸入一個小數,輸出它的立方。輸出保留小數點後的2位數字。 #include <stdio.h> int main(int argc, const char * argv[]) { double i,t; printf("輸入一個小數:\n"); scanf("%lf

C語言編程初學者容易常出的錯誤

C語言 C++ 編程 程序員C語言的最大特點是:功能強,使用方便靈活.C編譯的程序對語法 檢查並不象其它高級語言那麽嚴格,這就給編程人員留下"靈活的 余地",但還是由於這個靈活給程序的調試帶來了許多不便,尤其 對初學C語言的人來說,經常會出一些連自己都不知道錯在哪裏的 錯誤.看著有錯

神奇的C語言這才是C語言大牛操作作為面試題怕是秒殺眾人

想想 自己 初始 fun 怎麽 指向 都是 計算 換行 當然下面列出來的幾點都是C的基礎用法,只不過是這些用法可能平時不會被註意。所以很多東西第一次看到的時候,可能會覺得很怪異,但是細細想想就能很好的理解,也就能更好的清楚C語言的一些特性。但是在具體的編碼過程當中,我還是希

開始學習C語言遞歸程序漢諾(hanoi)塔問題嘗試

nbsp amp pri 現在 轉移 思考 大小 urn double 漢諾問題:3個座A, B,C, 在A座有64個大小不等的盤,現在要把64個盤轉移到另一個座,每次只能移動一個盤,且大盤不能放在小盤上面。 思考過程。 1)移動1個盤到另一個座需要搬1次,記 a(1) =

C語言:完美數求1-n之間的

輸入n,求1-n之間的完美數 完全數(Perfect number),又稱完美數或完備數,是一些特殊的自然數。如果一個數恰好等於它所有的因子之和,則稱該數為“完全數”。具體完美數定義請見完美數-百度百科 #include "stdio.h" void main() { int

C語言:輸入na求Sn=a+aa+aaa+···+a···

C語言:輸入n,a,求Sn=a+aa+aaa+···+a···a #include<stdio.h> int main() { int n, a, Sn = 0, t = 0; printf("請輸入n:"); scanf("%d",&n);

C語言的AT指令

今天跟人聊嵌入式,對面是某國際硬碟生產商的嵌入式軟體工程師,問了我很簡單的問題,如何快速將一個變數賦給某個特定的地址。         按我們思路就是unsigned *a = address1;  *a = address2;    

開始學習C語言遞迴程式漢諾(hanoi)塔問題嘗試

漢諾問題:3個座A, B,C, 在A座有64個大小不等的盤,現在要把64個盤轉移到另一個座,每次只能移動一個盤,且大盤不能放在小盤上面。 思考過程。 1)移動1個盤到另一個座需要搬1次,記 a(1) = 1 2)移動2個盤:在已經移動1個盤的基礎上(用a1次),將第2個盤放到另一個空座(1次),然後再

C語言 十進位制轉二進位制並儲存在陣列中

#include <stdio.h> #define uint unsigned int #define ushort unsigned short uint transform_data(uint frequence,ushort* pwm_table) { uint temp

c語言實現連結串列實現連結串列增刪改查

#include <stdio.h> #include <string.h> #include <stdlib.h> struct selflist{ int num; selflist* next; }; struct selflist* hea

虛擬機器中linux 系統新增硬碟以後進行分割槽掛載

    當自己虛擬機器中的linux 系統硬碟不夠用的時候需要新增硬碟給系統使用,所以可以通過以下的步驟實現 1、關閉自己的客戶機,然後執行以下步驟     2、  上面的步驟完成以後,重點

c語言 編寫一個程式輸入a b c三個值輸出其中最大者

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

c語言 實現一個函式判斷一個數是不是素數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

c語言 存款利息計算1000元存5年求五種方案存款五年後的本息和

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C語言】關於volatile你瞭解多少?

  volatile的本質:保持記憶體的可見性,volatile具體應該解釋為“直接存取原始記憶體地址”。 volatile 變數是隨時可能發生變化的,用volatile 修飾的變量表示可以被某些編譯器未知的因素更改。遇到這個關鍵字宣告的變數時,編譯器對訪問該變數的程式碼不再

嵌入式C語言之深度解讀C語言的儲存域作用域生命週期連結屬性

***儲存類:    就是儲存型別,描述,C語言變數的儲存地址。    記憶體的管理方式:棧  堆  資料段  bss段  .text段。    一個變數的儲存型別就是描述這個變數儲存在何種記憶體段之