首页
社区
课程
招聘
A loader for Armadillo Protected
发表于: 2005-10-15 18:10 10983

A loader for Armadillo Protected

2005-10-15 18:10
10983
用来修改硬件号的loader,不过除非你有正版的key,不然也没有用!!!

// A loader for Armadillo Protected "Pinch v2.58" (DEMO SOURCE CODE, NOT WORKING VERSION)
// Coded by arnix [arnix@freenet.am] -----------
// ----------------------------------------------
// What is it? OK, I've had a program and registration
// information for some other computer, the program
// is protected with Armadillo v4.?? and the registration
// information can be used only for that computer,
// because it's connected with computer's hardware ID.
// I had the name, registration code and the hardware
// ID, but I couldn't register it on my computer, so
// I decided to write this loader to force Armadillo to
// "think" that my computer's hardware ID is the same
// as I have had. If you want to use this source code
// for some other application you must:
// 1. Edit the string commented by "change me 1" and
//    write there the hardware ID that you have;
// 2. Edit the string commented by "change me 2" and
//    write there the executable's name;
// 3. Edit the string commented by "change me 3" and
//    write there the registration name;
// 4. Edit the string commented by "change me 4" and
//    write there the registration code;
// 5. Compile the source code, it has been successfully
//    compiled with "Watcom C/C++ Compiler v1.3" and
//    with "lcc-win32" (March 10, 2005 Release);

//
// WARNING: I have changed all registration information in
//          this public release! This is not a warez!

// Last updated: September 29, 2005 by arnix

#include <windows.h>
#include <stdio.h>

#define HARDWARE_ID     0x12345678      // change me 1 (0x12345678 is for 1234-5678 hardware ID)
#define PAGE_START      0x00C00000
#define PAGE_END        0x00C17FFFF
#define APP_NAME        "Builder.exe"   // change me 2

int main()
{
        STARTUPINFO SI = {0};
        PROCESS_INFORMATION PI = {0};
        char szSRTSmartDlg[] = "SRTSmartDlg";
        char szKeyRequired[] = "Key Required";
        char szButton[] = "Button";
        char szOK[] = "OK";
        char szYes[] = "&Yes";
        char szName[] = "Some name here...";      // change me 3
        char szCode[] = "123456-123456-123456-123456-123456-123456-123456-123456-123456-123456";        //change me 4
        char szEnterKey[] = "Enter Key";
        char szEdit[] = "Edit";
        char buf[50];
        char sig[9];
        unsigned origsig,usig,l;
        HWND h, h2, h3;
        BYTE b, tb;

        ZeroMemory(buf, 50);
        ZeroMemory(sig, 9);
        ZeroMemory(&SI, sizeof(STARTUPINFO));
        ZeroMemory(&PI, sizeof(PROCESS_INFORMATION));

        printf("Hello there, this is a loader for Pinch v2.58 (DEMO, NOT WORKING VERSION OF LOADER!)...\n\rCreated by arnix [arnix@freenet.am]\n\r\n\r");
        Sleep(4000);

        SI.cb = sizeof(STARTUPINFO);

        if (!CreateProcess(APP_NAME, NULL, NULL, NULL, FALSE, 0, 0, 0, &SI, &PI)) {
                printf("Error...");
                Sleep(3000);
                return 1;
        }
        Sleep(2000);
        while(1) {
                h = FindWindow((LPCTSTR) szSRTSmartDlg, (LPCTSTR) szKeyRequired);
                if (h != NULL) break;
        }

        while(1) {
                h2 = FindWindowEx(h, NULL, (LPCTSTR) szButton, (LPCTSTR) szOK);
                if (h2 != NULL) break;
                h2 = FindWindowEx(h, NULL, (LPCTSTR) szButton, (LPCTSTR) szYes);
                if (h2 != NULL) break;
        }

        SendMessage(h2, BM_CLICK, 0, 0);

        while(1) {
                h = FindWindow(NULL, (LPCTSTR) szEnterKey);
                if (h != NULL) break;
        }

        while(1) {
                h2 = FindWindowEx(h, NULL, (LPCTSTR) szEdit, NULL);
                if (h2 != NULL) break;
        }

        SendMessage(h2, WM_SETTEXT, 0, (LPARAM)(LPCTSTR) szName);

        while(1) {
                h3 = FindWindowEx(h, h2, (LPCTSTR) szEdit, NULL);
                if (h3 != NULL) break;
        }

        SendMessage(h3, WM_SETTEXT, 0, (LPARAM)(LPCTSTR) szCode);

        while(1) {
                h2 = FindWindowEx(h, h3, (LPCTSTR) szEdit, NULL);
                if (h2 != NULL) break;
        }

        l = SendMessage(h2, WM_GETTEXTLENGTH, 0, 0);
        if (l > 49) return 1;
        SendMessage(h2, WM_GETTEXT, l+1, (long int) buf);
        memcpy(&buf[0], (void*)((char*)buf+l-9), 4);
        memcpy(&buf[4], (void*)((char*)buf+l-4), 4);
        sscanf(buf, "%X", &origsig);
        memcpy(&b, &origsig, 1);

        usig = PAGE_START;
        while(1) {
                if (usig > PAGE_END) return 1;
                ReadProcessMemory(PI.hProcess, (void*)usig++, &tb, 1, NULL);
                if (tb == b) {
                        l = 0;
                        ReadProcessMemory(PI.hProcess, (void*)(usig-1), &l, 4, NULL);
                        if (l = origsig) break;
                }
        }
        l = usig-1;
        usig = HARDWARE_ID;
        WriteProcessMemory(PI.hProcess, (void*) l, &usig, 4, NULL);
        SendMessage(FindWindowEx(h, 0, (LPCTSTR) szButton, (LPCTSTR) szOK), BM_CLICK, 0, 0);
        Sleep(1000);
        return 0;
}

[课程]Android-CTF解题方法汇总!

收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
应该也算是Armadillo的注册漏洞了
2005-10-15 20:16
0
雪    币: 208
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
晕晕 好东东
2005-10-16 05:43
0
雪    币: 169
活跃值: (707)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
我这里测试硬件号修改不了,不知道其他人怎么样
2005-10-16 17:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我在程序中修改成正确的硬件号,注册名和注册号,编译通过运动它,根本不能修改硬件号。我是在arm3。78下试验的。哪位同志能用告诉一声
2005-10-16 19:05
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也不行,楼主改的那个版的
2005-10-16 20:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我终于看到了DEMO SOURCE CODE, NOT WORKING VERSION,这是不工作的演示版
2005-10-16 20:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
精神 是 敬佩的,能用不能用是另当别论!不过还是  希望谁给一个能用的源码,用HEX他麻烦了,顶你一下
2005-10-16 21:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
上楼的,你不是会内存修改硬件号嘛,我试验了不行啊!你怎么弄的,请指教一番!
2005-10-16 21:15
0
雪    币: 416
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我好像也没 成功过
2005-10-18 23:23
0
雪    币: 298
活跃值: (445)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
11
最初由 basaiyv1 发布
我好像也没 成功过


老外发的demo代码,传达思想
2005-10-19 01:41
0
雪    币: 136
活跃值: (105)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
12
haha 我还以为是你的想法呢
2005-10-20 10:26
0
雪    币: 84
活跃值: (660)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最初由 Immlep 发布


老外发的demo代码,传达思想

能否告诉我们您是在哪儿下载的?
2005-10-20 11:10
0
雪    币: 226
活跃值: (179)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
能够修改,你用WINHEX强制内存修改硬件码就可以,这个算它的比较大的漏洞~
2005-10-20 14:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
is program requires a security key. If you have one, select OK to enter it. After entering a valid key, you will not be prompted again.
2005-10-20 21:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
各位大侠可以说说怎样用WINHEX强制内存修改硬件码,我试了好多次都不行.谢谢
2005-10-21 01:07
0
游客
登录 | 注册 方可回帖
返回
//