冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 2896|回覆: 1
打印 上一主題 下一主題

aobscan

[複製鏈接]

46

主題

6

好友

144

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
15835
帖子
2025
主題
46
精華
0
積分
144
楓幣
2209
威望
125
存款
0
贊助金額
0
推廣
0
GP
164
閱讀權限
100
性別
保密
在線時間
371 小時
註冊時間
2012-10-23
最後登入
2022-4-21
跳轉到指定樓層
1
發表於 2014-12-15 15:02:11 |只看該作者 |倒序瀏覽
大家好像都比較愛vb?

仿CE的aobscan寫一個
方便直接在自己程式更新用的
無防呆,寫得差勿見怪

BYTE Hex2Dec(BYTE hex)
{
        return (hex & 0x0F) +  ( (hex & 0x10) ? 0 : 9);
}
/* str   : aob string
* index : if index>=0 the (index+1)-th match address
*            if index < 0, mean the index-th match from the end
* start : the start address of search range
* end   : the end address of search range
*/
DWORD AobScan(string str, int index, DWORD start, DWORD end)
{
        DWORD vecter = index<0 ? -1 : 1;
        DWORD offset, length = (str.length()+1)/3;
        BYTE *AoB = new BYTE[length+1];
        for(offset = 0; offset < length; offset++)
                if(str[3*offset] != '?')
                        AoB[offset] = (Hex2Dec(str[3*offset]) << 4) + Hex2Dec(str[3*offset+1]);

        DWORD boundary = (index<0 ? start : end) + vecter;
        int Index = index<0 ? ~index+1 : index+1;

        for (DWORD addr = index<0 ? end : start; addr != boundary; addr+=vecter)
        {
                for (offset = 0; offset < length; offset++)
                {
                        if (str[3*offset] == '?')
                                continue;
                        if (*(PBYTE)(addr + offset) != AoB[offset])
                                break;
                }
                if (offset==length && !--Index )
                {
                        delete AoB;
                        return addr;
                }
        }
        delete AoB;
        return 0;
}

example:
crcMain = AobScan("8A 11 80 C2 01", 0, 0x00401000, DumpEnd);

點評

anderson101866  我想是因為VB要從無到有比較簡單好上手吧XD, 不然應該用C的 快多了; 感謝大大了 收藏起來 以後不用自己刻了  發表於 2015-1-15 14:21
偷比  whatever 自己aobScan最方便了ˊˇˋ老外也都這樣  發表於 2014-12-15 21:15
偷比  我錯惹  發表於 2014-12-15 21:12
kkmomo  要??才行,單個?反而會錯 像是 "89 8D ?? ?? FF FF" ok "89 8D ? ? FF FF" 不行 就偷懶,反正自己用不會出錯XD  發表於 2014-12-15 21:08
偷比  good, but 只支援單碼'?',如果用空白來切割應該就通用了A___A  發表於 2014-12-15 20:56
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1鑰匙
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$

0

主題

0

好友

1

積分

新手上路

Rank: 1

UID
90167
帖子
33
主題
0
精華
0
積分
1
楓幣
36
威望
1
存款
0
贊助金額
0
推廣
0
GP
0
閱讀權限
10
性別
保密
在線時間
9 小時
註冊時間
2015-1-26
最後登入
2015-2-7
2
發表於 2015-1-27 15:16:06 |只看該作者
於是我又開啟了CODEBLOCKS
[發帖際遇]: zaq947 被甲甲肛,而賺到 11 楓幣 幸運榜 / 衰神榜
點評回覆

使用道具 舉報

高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-12-12 23:44

回頂部