ايران ويج

نسخه‌ی کامل: DataSegemt جدید با استفاده از data_seg
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام من از کد زیر استفاده میکنم برای ساخت یه DataSegemt جدید ولی خروجی dumpbin اسم سگمنت نمایش نمیده مشکل از کجاست ؟
من از ویژوال استدیو 2010 استفاده میکنم

خروجی dumpbin:
کد:
Dump of file error.exe

File Type: EXECUTABLE IMAGE

  Summary

        1000 .data
        1000 .rdata
        1000 .reloc
        1000 .rsrc
        1000 .text

کدی که استفاده کردم :
کد:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define PASSWORD_SIZE 100
#define PASSWORD      "myPASWORD\n"

int main() {
    int count = 0;
    #pragma data_seg (."kpnc")
    char passwd[]=PASSWORD;
    #pragma data_seg()
    char buff[PASSWORD_SIZE];
    for(;;){
        printf("Enter PW:");
        fgets(&buff[0], PASSWORD_SIZE, stdin);
        if(strcmp (&buff[0], &passwd[0]))
            printf("Wrong password\n");
        else
            break;
        
        if(++count>3)
            return -1;
    }
    printf("Password OK\n");
    return 0;
}
اقا حل نشد مشکل؟

من دیروز یه چندتا تست توی لینوکس انجام داده بودم؛ که دوتا نکته رو فهمیدم؛ حالا نمیدونم درست هست یا غلط؛
اولیش اینه که اون نقطه ذو توی گیومه بذار و تست کن:
کد:
(".kpnc")

دومیش این که کل کدهایی که من دیدم اون قسمت مورد نظر شما رو گذاشتند خارجج از تابع main ؛ یعنی شد اینطوری:


کد:
 #pragma data_seg (".kpnc")
 char passwd[]=PASSWORD;
#pragma data_seg()
int main() {
    int count = 0;

اینطوری؛ داخل سکشن date یدونه قسمت جدید بنام passwd ایجاد شد که این ثابت توش قرار گرفت.

حداقل اگه میخوایی تست کنی؛ اون چدن خط رو بیرون از main بذار و تست کن

اگه به نتیجه رسیدی خبرشو هم بده؛ من هم سعی میکنم به جواب برسم