어셈에서 임의의 수를 받아들이려면 어떤 식으로...?

kkojiband의 이미지

어셈에서 임의의 수를 받아들이려면 어떤 식으로 해야할까요??

어떤 식으로 임의의 수를 산출할수있는걸로 알고 있는데...

아시는 분 좀 가르쳐주세요~

그 원리에 대해 아시는 분도 설명 좀 부탁드립니다~

즐거운 주말~!

익명 사용자의 이미지

첫번째 방법을 되도록이면 추천합니다. 속도가 중요하다면 두번째 방법을 쓰세요.
첫번째 방법에 장점은 상당히 임의의수를 잘 만들어낸다는 것이고
두번째 방법은 속도가 빠르다는 겁니다.

[[[[[[[ 첫번째 방법 ]]]]]]]]]]]]]]

"/dev/urandom"
을 열어서 원하는 랜덤수의 크기만큼 읽으면
됩니다.
이게 제일 간단한 방법이죠.....

[[[[[[[ 두번째 방법 ]]]]]]]]]]]]]]
어셈으로 만드는것이 귀찮아서 C로 올립니다.

초기 Seed값은 Systemcall중에서 time을 호출했지만 여러가지 방법이
있겠죠....
그리고 곱하는 상수값은 정형화된 값이라서 많이 애용되는 값입니다.
random수에 관련된 학회에서 이것을 정했다고 하던데 저도 역사는 모릅니다.

unsigned int far pascal rand(void)
{
 static unsigned long s_seed=(unsigned long)time(NULL);
 s_seed=0x015a4e35LU*s_seed+1LU; 
 return((unsigned int)(s_seed>>16U)&0x7fff);
}
Necromancer의 이미지

어셈이라면 rdtsc 명령 쓰는 방법이 편할겁니다. 단, 펜티엄급 이상에서만 된다는거에

주의하셔야 할겁니다.

이거 쓰면 EDX:EAX에 CPU클럭 카운트에 따른 랜덤값이 들어오죠.

여기다 적당한 공식을 집어넣고 값을 꼬아넣으면 될겁니다.

한데 이게 권한을 요구하는 명령인지는 확인 안해봤습니다.

한번 해보고 올려보겠습니다.

Written By the Black Knight of Destruction

Necromancer의 이미지

rdtsc는 non-previledged 명령입니다.

rdtsc 명령 집어넣은 코드를 NASM으로 어셈블해 봤더니

세그폴트같은거 없이 정상동작합니다.

Written By the Black Knight of Destruction

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.